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