Как объявить переменную в 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';

Источник: http://www.commandprompt.com/ppbook/x19832

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;
Другие вопросы по тегам