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

PL / PGSQLからのセッション変数(\ set var ='value')の参照

    plpgsqlコード内でpsql変数を直接使用することはできません。記号の置換は文字列内でブロックされます:

    postgres=> select :'xx';
     ?column? 
    ----------
     AHOJ
    (1 row)
    
    postgres=> select ' :xx ';
    ?column? 
    ----------
     :xx 
    (1 row)
    

    ただし、サーバーセッション変数を設定して、後でこの種の変数をplpgsqlコード(サーバー側)で使用することができます。

    postgres=> set myvars.xx = :'xx';
    SET
    postgres=> do $$ begin 
                       raise notice '>>%<<', current_setting('myvars.xx');
                     end $$;
    NOTICE:  >>AHOJ<<
    DO
    

    コマンドラインから同じ手法を使用できます。http://okbob.blogspot.cz/2015/01/how-to-push-parameters-to-do-statement.html

    を参照してください。

    最後の注意-コード

    BEGIN
      SELECT some;
    END;
    

    plpgsqlでは無効です。 SELECTの結果 sはいくつかの変数に格納する必要があります。 Postgresは無料のSELECTの結果を返す可能性はありません クライアントへ-DO ステートメントはMSSQLプロシージャと同等ではありません。




    1. SQL Serverクエリ:リテラルでは高速ですが、変数では低速です

    2. MicrosoftAccessがビジネスに役立つ6つの理由

    3. Oracle ODP.Net With EntityFramework6-エンティティフレームワークデータベースと互換性のあるプロバイダーが見つかりませんでした

    4. インスタンス設定を取得するためのストアドプロシージャ