La configuración de valores predeterminados para las variables no se admite en psql, pero puede hacerlo mediante una solución alternativa.
Este comando psql:
\set myVar :myVar
no hace nada si la variable ya se configuró a través de psql (esto significa que myVar se configura nuevamente en su valor); de lo contrario, la variable se configura literalmente en la cadena :myVar
.
Usando esta circunstancia y el otro comando psql \gset
, en realidad puede establecer un valor predeterminado para myVar. Ponga esto en la parte superior de su 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
Parece que solo funciona con variables de texto, pero puede convertir a numérico si necesita variables numéricas:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
¿Cómo funciona \gset:
\gset
le permite establecer una variable a partir del resultado de una consulta de selección. La variable de resultado se nombra como el nombre de la columna, por eso necesita la cláusula AS "myVar"
al final de la consulta (no olvide las comillas dobles si desea utilizar nombres de variables con letras mayúsculas).
Por ejemplo el comando:
SELECT 'hello' AS var1 \gset
establece la variable var1
a hello
, lo mismo que
\set var1 hello
Consulte aquí para obtener más información:http://www.postgresql.org /docs/9.4/static/app-psql.html