【发布时间】:2020-03-12 11:44:47
【问题描述】:
升级到 postgresSQL 11,以下存储过程无法编译。
create or replace PROCEDURE savePointProc(startOrRollbak INTEGER, inVar VARCHAR)
as $$
DECLARE
BEGIN
IF startOrRollbak = 0 THEN
SAVEPOINT inVar;
ELSE
ROLLBACK TO SAVEPOINT inVar ;
END IF;
END;
$$ LANGUAGE plpgsql;
在 postgreSQL 11 中
错误:“TO”处或附近的语法错误 第 8 行:回滚到保存点 inVar ; ^ SQL 状态:42601 字符:180
有人能指出上面的错误导致程序编译失败吗?
已删除错误:“TO”处或附近的语法错误
create or replace PROCEDURE savePointProc(startOrRollbak INTEGER, inVar
VARCHAR) as $$
DECLARE
BEGIN
IF startOrRollbak = 0 THEN
SAVEPOINT inVar;
ELSE
ROLLBACK TO inVar ;
END IF;
END;
$$ LANGUAGE plpgsql;
error :
LINE 8: ROLLBACK TO inVar ;
^
SQL state: 42601
Character: 180
【问题讨论】:
-
谢谢,我相信这个错误更多地与 ROLLBACK TO* 相关
-
The SQL standard specifies that the key word SAVEPOINT is mandatory, but PostgreSQL and Oracle allow it to be omitted参考:postgresql.org/docs/11/sql-rollback-to.html -
已尝试省略 SAVEPOINT 关键字,但在 TO ERROR 上出现相同的错误:“TO”第 8 行或附近的语法错误:ROLLBACK TO inVar ; ^ SQL 状态:42601 字符:180
-
你能在格式化代码中发布你的错误吗?从'^'指向的问题中还不太清楚。
标签: postgresql