如何在PostgreSQL 9.6中将JSON数组作为函数参数传递

时间:2019-02-25 09:27:08

标签: php json postgresql

-使用json数组将每个元素解析为文本,但是显示错误。    -将类型从json []更改为json,但无济于事。

CREATE OR REPLACE FUNCTION public.test(in_param json[])
RETURNS integer
LANGUAGE 'plpgsql'
COST 100
VOLATILE 
AS $BODY$
declare 
 item text;
 arr1 text[];
 begin 
   for item in select * from json_array_elements_text(in_param ) loop
   arr1 = arr1||item;
   end loop;
return 0;
end;
$BODY$;
ALTER FUNCTION public.test(json[])
OWNER TO postgres;

2 个答案:

答案 0 :(得分:0)

您正在尝试传递数组 尝试以下

String t[] = { "a", "b" };

JSONArray mJSONArray = new JSONArray(Arrays.asList(mStringArray));

test(mJSONArray)

答案 1 :(得分:0)

我认为你错了。 ["a","b","c"]无法转换为json[]。附加方括号([])将创建一个Postgres数组数据类型,并且不能自我转换为JSON数组类型

如果这样做,您会收到的。

  

错误:格式不正确的数组文字

相反,定义您的函数以接受简单的JSON类型

create or replace function test(json_in json) ..
..

现在,只需引用示例参数["a","b","c"]即可

select  test('["a","b","c"]')

Demo