
-- create object type to be returnedCREATE TYPE _tmp_mytable AS ( ID integer,cost double precision );-- create function which returns queryCREATE OR REPLACE FUNCTION _tmp_myfunction( ID integer )RETURNS SetoF _tmp_mytable AS $$BEGIN RETURN query SELECT sales.gID,cost FROM sales WHERE ID = sales.gID; END;$$LANGUAGE plpgsql;
当我使用一个ID并使用以下方法调用它时,这很好用:
SELECT * FROM _tmp_myfunction(402);
我想要做的是调用它,但是使用一列值而不是一个值.但是,如果我使用以下方法,我最终会在一列中使用表的所有值,用逗号分隔:
-- call function using all values in a columnSELECT _tmp_myfunction(t.ID)FROM transactions as t;
我知道如果我使用SELECT _tmp_myfunction(402),我可以得到相同的结果;而不是SELECT * FROM _tmp_myfunction(402);但我不知道如何构造我的函数,以便在传入一列值时不会得到复合值.
解决方法 你可以这样写:SELECT (t2.function_row).ID,(t2.function_row).costFROM (SELECT _tmp_myfunction(t.ID) as function_row FROM transactions t ) t2;
它将为您提供字段,而不是复合行.
总结以上是内存溢出为你收集整理的在Postgresql中创建一个不返回复合值的函数全部内容,希望文章能够帮你解决在Postgresql中创建一个不返回复合值的函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)