Đặt giá trị mặc định cho các biến không được hỗ trợ trong psql, nhưng bạn có thể thực hiện việc này bằng cách sử dụng một giải pháp khác.
Lệnh psql này:
\set myVar :myVar
không có gì nếu biến đã được đặt qua psql (điều này có nghĩa là, myVar được đặt lại thành giá trị của anh ấy), nếu không biến được đặt theo nghĩa đen thành chuỗi :myVar
.
Sử dụng trường hợp này và lệnh psql khác \gset
, bạn thực sự có thể đặt giá trị mặc định cho myVar. Đặt cái này lên đầu tập lệnh sql của bạn:
\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
Nó dường như chỉ hoạt động với các biến văn bản, nhưng bạn có thể truyền sang số nếu bạn cần các biến số:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
\ gset hoạt động như thế nào:
\gset
cho phép bạn đặt một biến từ kết quả của một truy vấn chọn. Biến kết quả được đặt tên giống như tên cột, đây là lý do tại sao bạn cần mệnh đề AS "myVar"
ở cuối truy vấn (đừng quên dấu ngoặc kép nếu bạn muốn sử dụng tên biến có chữ hoa).
Ví dụ lệnh:
SELECT 'hello' AS var1 \gset
đặt biến var1
gửi đến hello
, giống như
\set var1 hello
Xem tại đây để biết thêm thông tin: http://www.postgresql.org /docs/9.4/static/app-psql.html