gpt4 book ai didi

sql - "IF"处或附近的 Postgres 语法错误

转载 作者:行者123 更新时间:2023-11-29 11:10:06 25 4
gpt4 key购买 nike

我是 postgres 的新手,正在处理我的任务。我不得不创建一个只有 1 列的表,然后我得到了这个语句在 pgadmin III 上运行:

BEGIN;
INSERT INTO mytable VALUES (1);
SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (2);
ROLLBACK TO SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (3);
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (4);
INSERT INTO mytable VALUES (5);
SAVEPOINT savepoint3;
SELECT * FROM mytable;
--NOTE: You need to run this IF statement as PGScript
--(button next to the normal run button)
IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4)
BEGIN
RELEASE SAVEPOINT savepoint2;
END
ELSE
BEGIN
INSERT INTO mytable VALUES(6);
END
--Run the next steps normally
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (7);
RELEASE SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (8);
ROLLBACK TO savepoint2;
COMMIT;

当我运行它时,我得到这个错误:“IF”处或附近的语法错误

我已经看过这个38.6.2. Conditionals38.6.2. Conditionals ,我不是很明白,我需要更改查询以具有

IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4) THEN 
BEGiN

然后当它结束时,我应该结束它:

END IF

怎么还是报错了??

最佳答案

IF 和其他 PL/pgSQL 功能仅在 PL/pgSQL 函数内可用。如果要使用 IF,则需要将代码包装在函数中。如果您使用的是 9.0+,那么您可以使用 DO编写内联函数:

do $$
begin
-- code goes here
end
$$

如果您使用的是早期版本的 PostgreSQL,那么您必须编写一个包含您的代码的命名函数,然后执行该函数。

关于sql - "IF"处或附近的 Postgres 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com