微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – PostgreSQL:将数组传递给过程的问题

我有一个类型:

CREATE TYPE status_record AS
   (
   id bigint,
   status boolean
   );

使用类型数组作为输入参数进行某些处理的过程:

CREATE OR REPLACE FUNCTION update_status(status_list status_record[])
RETURNS text AS
$BODY$
DECLARE  

BEGIN    
--does some processing
return 'SUCCESS'; 

end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

最后我查询了这个程序:

select *
from update_status(cast(ARRAY[(385,false),(387,false)] as status_record[]));

在pgadmin中一切正常.后来当我尝试使用Hibernate本机SQL查询Ka Boom调用相同的!!!显示以下内容

06003

最后一个问题:ARRAY [ – something]和{–something}都做同样的工作吗?

解决方法:

使用数组文字(数组的文本表示),因为数组构造函数ARRAY […]必须由Postgres进行评估:

SELECT update_status('{"(1,t)","(2,f)"}'::status_record[]);

也许没有明确的演员:

SELECT update_status('{"(1,t)","(2,f)"}');

SO之前也有过类似的案例:

> Pass array from node-postgres to plpgsql function
> How to pass custom type array to Postgres function

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐