PL/pgSQL的 RETURN NEXT例子

从网上找到例子:

可以说,RETURN NEXT要用在循环中:

例子一:

数据准备:

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 next row of SELECT
    END LOOP;
    RETURN;
END
$BODY$
LANGUAGE 'plpgsql';

运行结果:

pgsql=# SELECT * FROM getallfoo();
 fooid | foosubid | fooname 
-------+----------+---------
     1 |        2 | three
     4 |        5 | six
(2 rows)

pgsql=# 

例子二:

数据准备:

CREATE TABLE test (textcol varchar(10), intcol int); 
INSERT INTO test VALUES ('a', 1); 
INSERT INTO test VALUES ('a', 2); 
INSERT INTO test VALUES ('b', 5); 
INSERT INTO test VALUES ('b', 6); 

生成函数:

CREATE OR REPLACE FUNCTION ReturnNexting(pText Text) RETURNS SETOF test AS $$ 
        DECLARE 
                rec RECORD; 
        BEGIN 
                FOR rec IN SELECT * FROM test WHERE textcol = pText LOOP 
                        RETURN NEXT rec; 
                END LOOP; 
                RETURN; 
        END; 
$$ 
LANGUAGE plpgsql; 

运行结果:

pgsql=# SELECT * FROM ReturnNexting('a');
 textcol | intcol 
---------+--------
 a       |      1
 a       |      2
(2 rows)

pgsql=# 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值