加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读