PostgreSQL ОБЪЯВЛЯЕТ текстовую переменную и использует ее в INSERT

#sql #postgresql #variables #declare

#sql #postgresql #переменные #объявляет

Вопрос:

Я пытаюсь объявить текстовую переменную и вставить ее в свою movie таблицу.

Это то, что я делаю:

 DECLARE movie_plot TEXT;
movie_plot := '{test}';

INSERT INTO movie(plot) VALUES (movie_plot);
 

Это выдает мне эту ошибку:

 ERROR:  syntax error at or near "TEXT"
LINE 1: DECLARE movie_plot TEXT;
                           ^
SQL state: 42601
Character: 20
 

Я уже проверил некоторые решаемые вопросы, похожие на мои, и этот синтаксис кажется правильным. Я видел, что я мог бы использовать WITH для решения проблемы, но я хотел бы использовать DECLARE .

Комментарии:

1. DECLARE (и, следовательно, переменные) могут использоваться только внутри кода PL / pgSQL, а не в SQL

2. «Я уже проверил некоторые решаемые вопросы, похожие на мои, и этот синтаксис кажется правильным». — Не в SQL в Postgres, как уже прокомментировал @a_horse_with_no_name . Возможно, другие вопросы были нацелены на другую СУБД, а не на Postgres. (SQL Server?). Может быть, вы хотите объяснить основную проблему, которую пытаетесь решить с помощью своего подхода, чтобы получить помощь в этом .

3. Но я использую Postgres, я пишу свой SQL на pgAdmin

Ответ №1:

Возможно, вы хотите использовать current_setting :

 SET my_vars.movie_plot = 'test';
INSERT INTO movie(plot) VALUES (current_setting('my_vars.movie_plot'));