假设我们有一张简单的桌子

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

最佳答案

似乎可以使用不带中间数组的返回查询:

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

关于postgresql - Postgres:如何在插入后填充数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12800296/

10-15 04:05