如何在plpgsql函数中存储中间结果?

莱斯利·奥

我有一张桌子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是in中的无效类型my_other_function(),这有点奇怪,因为它是in中的有效返回类型my_function()

a_horse_with_no_name

您可以为此使用数组:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章