我有一个表my_table
和一个相应的函数:
create function my_function() returns setof my_table as
$$
select my_table.*
from my_table
where ...;
$$
language sql stable;
现在我想在另一个plpgsql
函数中使用该函数。我想存储my_function()
的结果,以便继续处理数据。如何在PostgreSQL中完成?我尝试了以下方法:
create function my_other_function() returns setof my_table as
$$
declare
results setof my_table;
begin
results := (select * from my_function());
...
end;
$$
language plpgsql stable;
然而,这会在setof my_table
中出现my_other_function()
无效类型的错误,这有点奇怪,因为它是my_function()
中的有效返回类型?
答案 0 :(得分:2)
您可以使用数组:
create function my_other_function()
returns setof my_table
as
$$
declare
results my_table[];
begin
select array_agg(t)
into results
from my_function() t;
return query
select *
from unnest(results);
end;
$$
language plpgsql stable;