我有一個簡單的用戶定義的函數如下:在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功能,我想打電話給所有這三個功能。有沒有人有如何做到這一點的想法?
感謝。它將從(功能)執行。 –