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

Postgresqlストアドプロシージャはテーブルのすべての列を返します

    結果を返したい場合は、return queryを使用する必要があります PL/pgSQLの場合 マニュアルに記載されているとおり

    CREATE OR REPLACE FUNCTION dwgcould.returnallcolumns(IN sessionId character varying)
      RETURNS SETOF public.mytable AS
    $BODY$
    BEGIN
      return query --<< this was missing
        SELECT * 
        FROM public.mytable 
        WHERE session_id = returnallcolumns.sessionId 
        ORDER BY pro_id DESC LIMIT 1;
    END;
    $BODY$
    LANGUAGE plpgsql VOLATILE;
    

    ただし、これにはPL/pgSQLは必要ありません。単純なSQL関数の方が効率的です。

    CREATE OR REPLACE FUNCTION dwgcould.returnallcolumns(IN sessionId character varying)
      RETURNS SETOF public.mytable AS
    $BODY$
        SELECT * 
        FROM public.mytable 
        WHERE session_id = returnallcolumns.sessionId 
        ORDER BY pro_id DESC LIMIT 1;
    $BODY$
    LANGUAGE sql;
    



    1. 複数の属性で製品を選択し、代わりにANDを使用して、または連結子、データモデルEAV

    2. ユリウス日番号をDATEまたはTIMESTAMPに変換するOracle11.1のバグ

    3. 常にnvarchar(MAX)を使用することに不利な点はありますか?

    4. タイムスタンプ列から現在の月のレコードmysqlを選択します