Postgresql:“DELIMITER”或附近的语法错误

时间:2018-05-19 13:25:09

标签: postgresql

我试图在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 :(得分:4)

删除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()在SQL语句的第3行

但我想这超出了这个问题的范围。

答案 1 :(得分:2)

只需删除带DELIMITER $$的行.PostgreSQL没有该语法,而是允许您使用开箱即用的$$格式:https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING