想象一下,我们有一个简单的表
create table a (id serial, data text);
以及以下功能:
create or replace function f()
returns SETOF int As
$BODY$
DECLARE
l_arr int[];
BEGIN
insert into a(data)
values ('a')
returning array_agg(data) into l_arr; --THIS DOES NOT WORK
RETURN l_arr;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
COST 100
如何将插入的值收集到同一SQL语句中的数组中?
答案 0 :(得分:1)
看来,可以在没有中间数组的情况下使用RETURN QUERY:
create or replace function f()
returns SETOF int As
$BODY$
BEGIN
RETURN QUERY
insert into a(data)
values ('a')
returning id;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER
COST 100