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

PostgreSQLの関数でクエリ結果の行を返す方法は?

    現時点で覚えている集合戻り関数を宣言する方法:

    --example 1
    create or replace function test() returns SETOF RECORD
    as $$
    begin
        RETURN QUERY SELECT * FROM generate_series(1,100);
    end;
    $$ language plpgsql;
    --test output
    select * from test() AS a(b integer)
    
    --example 2
    create or replace function test2() returns TABLE (b integer)
    as $$
    begin
        RETURN QUERY SELECT * FROM generate_series(1,100);
    end;
    $$ language plpgsql;
    --test output
    select * from test2()
    
    --example 3
    create or replace function test3() returns SETOF RECORD
    as $$
    declare
      r record;
    begin
        FOR r IN SELECT * FROM generate_series(1,100) LOOP
          RETURN NEXT r;
        END LOOP;
    end;
    $$ language plpgsql;
    --test output
    select * from test3() AS a(b integer);
    
    --example 4
    create or replace function test4() returns setof record
    as $$
        SELECT * FROM generate_series(1,100)
    $$ language sql;
    --test output
    select * from test4() AS a(b integer);
    
    --example 5
    create or replace function test5() returns setof integer
    as $$
    begin
        RETURN QUERY SELECT * FROM generate_series(1,100);
    end;
    $$ language plpgsql;
    --test output
    select * from test5()
    
    --example 6
    create or replace function test6(OUT b integer, OUT c integer) RETURNS SETOF record
    as $$
    begin
        RETURN QUERY SELECT b.b, b.b+3 AS c FROM generate_series(1,100) AS b(b);
    end;
    $$ language plpgsql;
    --test output
    select * from test6()
    



    1. MySQL空間拡張を使用して、円内のポイントを選択します

    2. 複数のテーブル、複数のGROUP BYおよびgroup_concatからのMySQLSELECT?

    3. PHPのパスワードリセットシステム

    4. WordPress –舞台裏、パート1