【发布时间】:2021-10-31 03:16:30
【问题描述】:
尝试修改工作中的存储过程并希望在该过程中添加一些条件逻辑。我创建了一个小型测试程序,只是为了尝试理解 IF/ELSE 逻辑,但我一直被 DBeaver(我的 SQL UI)骂。我几乎直接从 IBM 文档网站上拿了这个例子。有人可以告诉我我在这里缺少什么吗:
CREATE PROCEDURE IFTEST(IN rating INTEGER, OUT res VARCHAR(1))
LANGUAGE SQL
BEGIN
IF rating = 1 THEN
SET res = '2';
-- ELSE IF rating = 2 THEN
-- SET res = 3;
ELSE
SET res = '4';
END IF;
END
它一直给我这个:
SQL Error [42601]: An unexpected token "END-OF-STATEMENT" was found following "s = '4'". Expected tokens may include: "
END IF".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14
【问题讨论】:
-
将 Dbeaver 中的语句分隔符配置为不同于默认分号的东西,很多人使用 @ 代替。然后在块的末尾(即在最后的 END 之后)使用选择的字符。这是一个常见问题解答,所以做你的研究,因为很多人以前问过同样的问题。
-
根据我的经验,DBeaver 在许多使用 db2 jdbc 连接器的情况下表现异常。有时我认为 jdbc 本身存在一些问题。我可以举出许多可能被视为错误的示例。
-
谢谢@mao。作为记录,我在发布之前一直在网上搜索解决方案。更改了分隔符,现在我得到了:SQL 错误 [42601]:在“END”之后发现了意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“JOIN
”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14
标签: sql stored-procedures db2