1

単純なテーブルがあると想像してください

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ステートメントの配列に挿入された値をどのように収集できますか?

4

1 に答える 1

1

中間配列なしでRETURNQUERYを使用できるようです。

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
于 2012-10-09T13:05:38.193 に答える