当前位置: 首页 > 知识库问答 >
问题:

DB2存储过程给出了语法错误

范彭亮
2023-03-14

我正在为db2创建一个存储过程。但是它给出了一个错误

SQL错误[42601]:在“SS_token_BAK”之后发现意外的标记“END-OF-STATEMENT”。预期的标记可能包括:“END IF”。.SQLCODE=-104,SQLSTATE=42601,DRIVER=4.23.42。

以下是我的存储过程。

CREATE OR REPLACE PROCEDURE TOKEN_CLEANUP_SP

BEGIN

DECLARE batchSize INTEGER;

-- ------------------------------------------
-- CONFIGURABLE ATTRIBUTES
-- ------------------------------------------
SET batchSize = 10000;      -- SET BATCH SIZE FOR AVOID TABLE LOCKS    [DEFAULT : 10000]

-- ------------------------------------------------------
-- BACKUP IDN_OAUTH2_ACCESS_TOKEN TABLE
-- ------------------------------------------------------
IF EXISTS (SELECT TABLE_NAME FROM TABLES WHERE TABLE_NAME = 'IDN_OAUTH2_ACCESS_TOKEN_BAK')
THEN
    DROP TABLE IDN_OAUTH2_ACCESS_TOKEN_BAK;
END IF;     

END/

是否有人面临此类问题。任何这方面的帮助将不胜感激。

共有1个答案

胡夕
2023-03-14

验证您是否为提交“创建或替换”过程的任何工具正确配置了语句结束分隔符。不同的工具有不同的方式来配置块终止符(或者称为语句结束分隔符)。对于命令行脚本,在文件开头使用- #SET TERMINATOR /

您的代码示例将 / 显示为块终止符,因此您可能希望使用该字符作为块分隔符。分号终止块内的语句。

另外,您应该看到,如果在编译时隐含架构中不存在指定的表,则您的代码将无法编译,因为您使用的是静态 SQL。您可能希望将动态 SQL 改为用于删除表语句(搜索“立即执行”示例)。

 类似资料:
  • 我试图使用RazorSQL客户端在DB2数据库中创建一个存储过程,但遇到了以下错误: 块引用错误:字符、标记或子句无效或丢失。DB2SQL错误:SQLCODE=-104, SQLSTATE=42601, SQLERRMC=SELECT 存储过程代码为:

  • 如果你有什么建议,我很想听听! 谢谢:)

  • 我正在使用 db2 和 S 松鼠 SQL 我试图创建一个存储过程,其中包含一个简单的select语句。当我省略下面的select语句并运行代码时,过程就创建好了。这个过程也可以被删除和调用。 当我添加select语句时,我得到错误:DB2 SQL错误:SQLCODE=-102,SQLSTATE=42601,... 如果你去IBM iseries信息中心,它会说: SQL0104 SQLCODE-1

  • 问题内容: 这让我发疯。 还给我 那将是线 怎么了 我尝试了一些小的更改,但总是收到相同的错误。我检查了文档,但看不到语法错误。我知道这是一个愚蠢的错误,但是我坚持了大约半个小时。是一个游标,它迭代每一行并为每一行执行一个存储过程;我已经用存储函数完成了它(它的工作原理很像魅力),但是在服务器上发布时,我看到我的共享主机不支持存储函数,只支持存储过程:(因此,这是我最好的方法我发现了。 问题答案:

  • 我是MySQL存储过程的新手。不知道为什么我会出现以下错误。请帮我调试一下。 1064年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第3行的user_-username=@th'中使用near'作为该用户的id,该用户的全名 表名:user_master 用户id密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密码密

  • 我是使用JDBC和MariaDB创建存储过程的初学者。当我创建过程时,我得到一个错误。我从昨天开始就遇到了这个问题: 到目前为止,我尝试了以下代码。我不知道是什么原因造成了这个错误。