Синтаксическая ошибка PostgreSQL в PGAdmin

Я плохо знаком с PostgreSQL и использую инструментальное средство формирования запросов в PGAdmin. Я пытаюсь выполнить запросы pgsql, которые используют переменные, но я, может казаться, не разбираюсь в синтаксисе.

Вот демонстрационный запрос, который дает синтаксическую ошибку:

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  PRINT num;

END;

Обновление:
Хорошо, позвольте мне попытаться объяснить. Я происхожу из среды SQL-сервера. В студии управления я могу открыть окно запроса и играть с (T) - SQL-ЗАПРОСЫ.

Например, я могу записать что-то вроде этого:

DECLARE @num INT
SET @num = 3
SELECT @num

Я знаю, что это - немой пример, но я просто пытаюсь объявить переменную и сделать что-то с ним. Я пытаюсь ознакомиться с PL/PGSQL.


Обновление, снова:
Это - я снова. Я пробую сценарий ниже и добираюсь" [ОШИБКА] 7.0-2: синтаксическая ошибка, непредвиденный символ". Это предназначено для работы в PGAdmin?

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
7
задан jjnguy 27 January 2012 в 22:30
поделиться

4 ответа

Просто чтобы перефразировать и "конкретизировать" то, что говорят другие: В PostgreSQL нет встроенных процедур . Также отсутствует оператор PRINT . Вы должны:

CREATE OR REPLACE FUNCTION test() RETURNS void AS $$
DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
$$ LANGUAGE plpgsql;

SELECT test();
5
ответ дан 6 December 2019 в 08:43
поделиться

Понятия не имею, чего вы пытаетесь достичь. PostgreSQL не поддерживает такой синтаксис. Подобные ключевые слова (кроме PRINT ?!) есть в PL / pgSQL, который является процедурным языком для создания ФУНКЦИЙ, а не для написания автономных SQL-запросов.

1
ответ дан 6 December 2019 в 08:43
поделиться

Сам по себе Postgres не поддерживает ничего подобного ( пока ). psql (официальный клиент командной строки) содержит некоторые элементарные сценарии.

Лучшим вариантом для вас является pgAdmin, который уже имеет встроенные сценарии .

1
ответ дан 6 December 2019 в 08:43
поделиться

Если вы пытаетесь распечатать num (скажем, для отладки) вы можете попробовать:

RAISE NOTICE '%', num;

http://www.postgresql.org/docs/8.4/static/plpgsql-errors-and-messages.html

PRINT не означает что-нибудь в PL / pgSQL.

3
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: