sql >> データベース >  >> RDS >> PostgreSQL

plpgsql関数から行のセットを返します。

    CREATE FUNCTION test() 
    RETURNS my_table AS
    $BODY$
    DECLARE
        q4 my_table;
    BEGIN
        -- add brackets to get a value 
        -- select row as one value, as q4 is of the type my_table
        -- and limit result to one row
        q4 := (SELECT my_table FROM my_table ORDER BY 1 LIMIT 1);
        RETURN q4;
    END;$BODY$
    -- change language to plpgsql
    LANGUAGE plpgsql;
    
    • sqlでは変数を使用できません 関数については、plpgsqlを使用してください 。
    • 変数に単一の値を割り当てることができ、select query 行のセットを返します。
    • 変数は複合型であるため、1つの値として行を選択する必要があります。

    ループの使用例:

    DROP FUNCTION test();
    CREATE FUNCTION test() 
    -- change to SETOF to return set of rows, not a single row
    RETURNS SETOF my_table AS
    $BODY$
    DECLARE
        q4 my_table;
    BEGIN
        FOR q4 in
            SELECT * FROM my_table
        LOOP
            RETURN NEXT q4;
        END LOOP;
    END;$BODY$
    LANGUAGE plpgsql;
    
    SELECT * FROM test();
    

    関数からの復帰 に関するドキュメントをお読みください



    1. NetBeansIDEでMySQLへの接続を確立できません

    2. PostgreSQLで秒単位のタイムスタンプ間の違いを見つける

    3. MySQLとMongoDB

    4. データベース内のすべてのテーブルのサイズを取得する