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中一切正常。稍后,当我尝试使用 调用相同的代码时 显示以下内容:

 org.postgresql.util.PSQLException:

ERROR: array value must start with "{" or dimension information

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

回答:

使用 ( 文本表示形式),因为数组构造函数ARRAY[...]必须由Postgres求值:

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

甚至没有显式的强制转换:

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

以上是 PostgreSQL:将数组传递给过程的问题 的全部内容, 来源链接: utcz.com/qa/398089.html

回到顶部