L'impostazione dei valori predefiniti per le variabili non è supportata in psql, ma puoi farlo usando una soluzione alternativa.
Questo comando psql:
\set myVar :myVar
non fa nulla se la variabile è stata già impostata tramite psql (questo significa che myVar viene reimpostata sul suo valore), altrimenti la variabile viene impostata letteralmente sulla stringa :myVar .
Usando questa circostanza e l'altro comando psql \gset , puoi effettivamente impostare un valore predefinito per myVar. Metti questo sopra il tuo script 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
Sembra funzionare solo con variabili di testo, ma puoi eseguire il cast su numeric se hai bisogno di variabili numeriche:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
Come funziona \gset:
\gset consente di impostare una variabile dal risultato di una query di selezione. La variabile di risultato è denominata come il nome della colonna, ecco perché è necessaria la clausola AS "myVar" alla fine della query (non dimenticare le virgolette se vuoi usare nomi di variabili con lettere maiuscole).
Ad esempio il comando:
SELECT 'hello' AS var1 \gset
imposta la variabile var1 a hello , lo stesso di
\set var1 hello
Per ulteriori informazioni, vedere qui:https://www.postgresql.org /docs/9.4/static/app-psql.html