我试图在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
答案 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