Menyetel nilai default untuk variabel tidak didukung di psql, tetapi Anda dapat melakukannya menggunakan solusi.
Perintah psql ini:
\set myVar :myVar
tidak melakukan apa-apa jika variabel sudah disetel melalui psql (ini berarti, myVar disetel lagi ke nilainya), jika tidak, variabel disetel secara harfiah ke string :myVar
.
Menggunakan keadaan ini dan perintah psql lainnya \gset
, Anda sebenarnya dapat menetapkan nilai default untuk myVar. Letakkan ini di atas skrip sql Anda:
\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
Tampaknya hanya berfungsi dengan variabel teks, tetapi Anda dapat mentransmisikan ke numerik jika Anda membutuhkan variabel numerik:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
Bagaimana \gset bekerja:
\gset
memungkinkan Anda untuk mengatur variabel dari hasil kueri pemilihan. Variabel hasil dinamai seperti nama kolom, inilah mengapa Anda memerlukan klausa AS "myVar"
di akhir kueri (jangan lupa tanda kutip ganda jika Anda ingin menggunakan nama variabel dengan huruf besar).
Misalnya perintah:
SELECT 'hello' AS var1 \gset
menyetel variabel var1
untuk hello
, sama dengan
\set var1 hello
Lihat di sini untuk info lebih lanjut:http://www.postgresql.org /docs/9.4/static/app-psql.html