簡體   English   中英

DB2存儲過程給出了語法錯誤

[英]DB2 stored procedure gave syntax errors

我正在為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/

有誰面對這種類型的問題。 任何幫助,將不勝感激。

驗證是否已為提交“創建或替換”過程的任何工具正確配置了語句結尾定界符。 不同的工具具有不同的方式來配置塊終止符(或者語句結束定界符)。 對於命令行腳本,請在文件開頭使用-#SET TERMINATOR /,也可以使用其他方法。

您的代碼示例顯示/作為塊終止符,因此您可能希望將該字符用作塊定界符。 分號可終止塊內的語句。

另外,如果指定的表在編譯時在隱式架構中不存在,您應該看到代碼不會編譯,因為您使用的是靜態SQL。 您可能要對drop table語句使用動態SQL(搜索“ EXECUTE IMMEDIATE”示例)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM