我有一个简单的用户定义的函数如下:在PLPGSQL,如何使用用户定义的函数在另一个用户定义的函数
create or replace function test()
returns table (a float, b float) as
$$
begin
drop table if exists test1;
create table test1(a float, b float);
insert into test1 values(1,1),(2,1),(3,3);
return query select * from test1;
end;
$$ language plpgsql;
我有另一用户定义的函数。在这一个中,我想调用上面的函数。
create or replace function test2()
returns table (a float) as
$$
begin
select test();
return query select a+b from test1;
end;
$$language plpgsql;
在此之后,当我这样做:
select test2();
它给了我一个错误:
query has no destination for result data.
如果我做我的第二个功能如下:
create or replace function test2()
returns table (a float) as
$$
select a+b from test();
$$language sql;
然后我做select test2();
它运行正常。我认为这不起作用的原因是当我从sql函数返回一些东西时,它返回一个表,但是当我从plpgsql函数返回一些东西时,它返回的东西看起来像一个元组。例如(1,2)。 1将是表格的第一个属性,2将是第二个属性。这只是一个简单的例子,我可以用sql代替plpgsql来解决这个问题。但是,在我的真实项目中,我真的想在另一个plpgsql函数中调用plpgsql函数。
然后我的程序的主要结构如下所示:
plpgsql function 1
plpgsql function 2
plpgsql function 3
在我的主要PLPGSQL功能,我想打电话给所有这三个功能。有没有人有如何做到这一点的想法?
感谢。它将从(功能)执行。 –