Postgresql: синтаксическая ошибка на или около "РАЗДЕЛИТЕЛЬ" - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь написать простую хранимую функцию в postgresql, но получаю синтаксическую ошибку.Может кто-нибудь сказать мне, почему я получаю ошибку здесь?

Сохраненная функция

DELIMITER $$
CREATE OR REPLACE FUNCTION findAccount() RETURNS VOID
AS $$
BEGIN
select * from account;
END;
$$ LANGUAGE plpgsql; $$

Ошибка

ERROR:  syntax error at or near "DELIMITER"
LINE 1: DELIMITER $$
        ^
SQL state: 42601
Character: 1

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Просто удалите строку с DELIMITER $$ PostgreSQL не имеет этого синтаксиса, вместо этого он позволяет использовать формат $$, который вы используете из коробки: https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING

0 голосов
/ 19 мая 2018

Удалить DELIMITER $$ и последний $$.Это не MySQL.

CREATE OR REPLACE FUNCTION findAccount() RETURNS VOID
AS $$
BEGIN
select * from account;
END;
$$ LANGUAGE plpgsql;

Это решит проблему синтаксической ошибки.

Но ваша функция, похоже, не делает ничего полезного.И SELECT без целевых переменных выдаст ошибку при выполнении функции.

ОШИБКА: у запроса нет места назначения для данных результата Состояние SQL: 42601 Подсказка: если вы хотите отменить результатыSELECT, используйте вместо этого PERFORM.Контекст: PL / pgSQL функция findaccount () строка 3 в SQL-выражении

Но я думаю, что это выходит за рамки этого вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...