Postgres:插入后如何填充数组

时间:2012-10-09 12:42:15

标签: postgresql stored-procedures insert

想象一下,我们有一个简单的表

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语句中的数组中?

1 个答案:

答案 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