変数のデフォルト値の設定はpsqlではサポートされていませんが、回避策を使用して行うことができます。
このpsqlコマンド:
\set myVar :myVar
変数がすでにpsqlを介して設定されている場合(つまり、myVarが再び彼の値に設定されている場合)は何もしません。それ以外の場合、変数は文字列:myVar
に文字通り設定されます。 。
この状況と他のpsqlコマンド\gset
を使用する 、myVarのデフォルト値を実際に設定できます。これをSQLスクリプトの上に置きます:
\set myVar :myVar
-- now myVar is set to the string ':myVar' if was not already set.
-- Checking it using a CASE statement:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN 'default_value'
ELSE :'myVar'
END AS "myVar" \gset -- < \gset call at end of the query
テキスト変数でのみ機能するようですが、数値変数が必要な場合は数値にキャストできます:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
\ gsetの仕組み:
\gset
選択クエリの結果から変数を設定できます。結果変数には列名と同じ名前が付けられます。そのため、AS "myVar"
句が必要です。 クエリの最後(大文字で変数名を使用する場合は、二重引用符を忘れないでください)。
たとえば、次のコマンド:
SELECT 'hello' AS var1 \gset
変数var1
を設定します hello
へ 、
\set var1 hello
詳細については、こちらをご覧ください: http://www.postgresql.org /docs/9.4/static/app-psql.html