微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从postgresql 9中的函数返回表,行或记录?

我有一个名为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/[email protected]

同样在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();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐