我的类型为:
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 调用相同的代码时 !!! 显示以下内容:
org.postgresql.util.PSQLException: ERROR: array value must start with "{" or dimension information
最后一个问题:既ARRAY[--something]与{--something}做同样的工作吗?
ARRAY[--something]
{--something}
使用 数组文字 ( 数组的 文本表示形式),因为数组构造函数ARRAY[...]必须由Postgres求值:
ARRAY[...]
SELECT update_status('{"(1,t)","(2,f)"}'::status_record[]);
甚至没有显式的强制转换:
SELECT update_status('{"(1,t)","(2,f)"}');