• 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=# 
  • 相关阅读:
    杭电2054
    M1/M2总结
    软件开发相关的读书笔记 问题与方法
    代码复审1234跟我一起来
    电梯调度算法简述
    Pair_Work Project
    读书笔记摘录:
    Individual Project
    个人阅读作业——软件工程M1/M2的总结
    个人阅读作业2
  • 原文地址:https://www.cnblogs.com/gaojian/p/3179791.html
Copyright © 2020-2023  润新知