То, что я хочу, чтобы один и тот же запрос не завершился неудачей - независимо от того, установлена переменная или нет.Затем, в зависимости от устанавливаемой переменной - возвращая соответствующий вывод.
Вот более или менее то, что я имею в виду / хочу:
--variable not set, returns not substituted string:
SELECT 'solution=:abc' result;
result
---------------
solution=:abc
--variable set:
\set abc 5+7
SELECT 'solution=:abc' result;
result
---------------
solution=5+7
НО INSTEAD в обоих случаях переменная не делаетне подставляйся:
SELECT 'solution=:abc' result;
result
---------------
solution=:abc
--variable set:
\set abc 5+7
SELECT 'solution=:abc' result;
result
---------------
solution=:abc
Я обнаружил, что мне нужно использовать синтаксис 'variable', поэтому
SELECT 'solution=':'abc' result;
, но это дает дополнительный ('
) знак там:
result
---------------
solution='5+7
и не работает, когда переменная не установлена
\unset abc
SELECT 'solution=':'abc' result;
ERROR: syntax error at or near ":"
LINE 1: SELECT 'solution=':'abc' result;
Что происходит?
Любой способ заставить это работать в обоих случаях, как описано ввершина?Я на PostgreSQL 9.6.11