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

plpgsql宣言ブロック内で\set変数を使用します

    説明は、マニュアルによると

    DOの本文 ステートメントはドルで引用された文字列です。したがって、文字列内の補間はありません。

    文字列である必要があるため、その場で文字列を連結することもできません。 マニュアル:

    ただし、文字列を連結して実行することはできます。

    大胆な強調鉱山。引用を正しくする必要があります:

    test=# \set test 'some value'
    test=# \set code 'DECLARE v_test text := ' :'test' '; BEGIN RAISE NOTICE ''test var is: %'', v_test; END'
    test=# DO :'code';
    NOTICE: test var is: some value
    DO
    test=#
    

    しかし、私はむしろ(一時的な)関数を作成し、その値をパラメーターとして渡します(psql補間が機能する場合)。 dba.SEに関するこの関連回答の詳細:




    1. RPostgreSQLを使用した特定のスキーマへの書き込み

    2. Oracleから見た文字列の実際の長さ

    3. MySQLクエリの式を別のフィールドの変数として再利用できますか?

    4. サンプルDWデータベースAdventureWorksDW2019の復元