如何从postgresql 9中的函数返回表,行或记录?
发布时间:2020-12-13 15:56:12 所属栏目:百科 来源:网络整理
导读:我有一个名为person的表,它有id,name,status,我希望通过带有1个参数(名称)的函数返回行 谁能帮我?请放轻松,因为我在postgresSQL中非常棒. 这是我的正常功能代码 create or replace function fn_list(vname varchar) returns void as $$begin SELECT id,stat
我有一个名为person的表,它有id,name,status,我希望通过带有1个参数(名称)的函数返回行
谁能帮我?请放轻松,因为我在postgresSQL中非常棒. 这是我的正常功能代码 create or replace function fn_list(vname varchar) returns void as $$ begin SELECT id,status from usuario WHERE name= vname; end; $$language plpgsql; 我知道我返回一个void函数但如果我想要一个行列表怎么办? 解决方法
我知道Oracle中的流水线返回会这样做,所以我用它来从plpgsql中找到’RETURN NEXT’:
http://www.postgresql.org/message-id/007b01c6dc31$ae395920$0a00a8c0@trivadis.com 同样在grokbase上: http://grokbase.com/t/postgresql/pgsql-performance/069kcttrfr/pipelined-functions-in-postgres (编辑以添加官方文档):http://www.postgresql.org/docs/9.2/static/plpgsql-control-structures.html 杀手,我将不得不自己利用这一点. 再编辑一次以添加一些演示代码(直接来自postgresql.org文档): CREATE TABLE foo (fooid INT,foosubid INT,fooname TEXT); INSERT INTO foo VALUES (1,2,'three'); INSERT INTO foo VALUES (4,5,'six'); CREATE OR REPLACE FUNCTION getAllFoo() RETURNS SETOF foo AS $BODY$ DECLARE r foo%rowtype; BEGIN FOR r IN SELECT * FROM foo WHERE fooid > 0 LOOP -- can do some processing here RETURN NEXT r; -- return current row of SELECT END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql' ; SELECT * FROM getallfoo(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |