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

PL / pgSQL関数:executeステートメントを使用して複数の列を持つ通常のテーブルを返す方法

    その機能をどのように実行していますか?選択ステートメントとして機能します。

    テーブルを作成します: public.users

    create table public.users (id int, firstname varchar, lastname varchar);
    

    いくつかのレコードを挿入します:

    insert into public.users values (1, 'aaa','bbb'),(2,'ccc','ddd');
    

    関数: my_function

    CREATE OR REPLACE FUNCTION my_function(user_id integer) RETURNS TABLE(id integer, firstname character varying, lastname character varying) AS $$
        DECLARE
            ids INTEGER[];
        BEGIN
             ids := ARRAY[1,2];
             RETURN QUERY
                 SELECT users.id, users.firstname, users.lastname
                 FROM public.users
                 WHERE users.id = ANY(ids);
        END;
    $$ LANGUAGE plpgsql;
    

    これで、*

    で使用できます
    select * from my_function(1);
    

    クエリの結果

     id | firstname | lastname 
    ----+-----------+----------
      1 | aaa       | bbb
      2 | ccc       | ddd
    

    または列名も使用

    select id,firstname,lastname from my_function(1);
    

    結果

     id | firstname | lastname 
    ----+-----------+----------
      1 | aaa       | bbb
      2 | ccc       | ddd
    


    1. SQLで主キーを作成する方法

    2. SQLServerでGOステートメントを使用してID列にレコードを挿入する方法-SQLServer/T-SQLチュートリアルパート42

    3. SpringJPAでpostgres配列をマッピング中にエラーが発生しました

    4. R12.2のデータモデルの論理ビュー