Как объявить переменную в PostgreSQL
Я пытаюсь объявить переменную в коде, как это, но это не работает. Можете ли вы сказать мне, в чем проблема?
ERROR: syntax error at or near "VARCHAR"
LINE 2: p_country VARCHAR;
DECLARE
p_country VARCHAR;
p_country : = '';
SELECT p_country;
3 ответа
Создайте новый параметр в postgresql.conf для custom_variable_classes:
custom_variable_classes = 'var'
Перезагрузите конфиг, теперь у вас есть переменная "var", доступная во всех ваших базах данных.
Чтобы создать переменную p_country, просто используйте SET:
SET var.p_country = 'US';
SELECT current_setting('var.p_country') AS p_country;
Это не красота, но это работает.
Внутри функции PL/pgSQL вы можете объявить переменные следующим образом:
CREATE FUNCTION identifier (arguments) RETURNS type AS '
DECLARE
-- Declare an integer.
subject_id INTEGER;
-- Declare a variable length character.
book_title VARCHAR(10);
-- Declare a floating point number.
book_price FLOAT;
BEGIN
statements
END;
' LANGUAGE 'plpgsql';
PL/pgSQL
У меня была такая же проблема, как у вас. Оказывается, оператор DECLARE — это что-то из совершенно другого языка PL/pgSQL. См. https://www.postgresql.org/docs/14/plpgsql.html .
PostgreSQL
Чтобы добиться этого с помощью PostgreSQL, вы можете сделать следующее:
WITH myconstants (p_country) as (
values ('')
)
SELECT p_country FROM myconstants;