簡體   English   中英

MySQL存儲過程檢查表是否存在,然后更改語法錯誤

[英]MySQL Stored Procedure check if table exists then Alter Syntax Error

我的存儲過程如下:

DROP PROCEDURE IF EXISTS TEST;
CREATE PROCEDURE TEST()
BEGIN
    IF (SELECT count(*) FROM (SELECT table_name 
                FROM INFORMATION_SCHEMA.TABLES
               WHERE table_name LIKE 'User') A) > 0 THEN
        ALTER TABLE User DROP FOREIGN KEY FK_forkey
    END IF;
END

SELECT ....

我在END IF處出現語法錯誤。 我一直在嘗試多種方法來解決此問題,但到目前為止沒有成功。 如果在DROP PROCEDURE之后和END之后添加Delimiter //,則在Delimiter末尾會出現錯誤(在此位置delimiter是無效輸入)。 我錯過了什么/我怎么做錯了? 預先感謝您的回復。

更新

DROP PROCEDURE IF EXISTS TEST;
DELIMITER //
CREATE PROCEDURE TEST()
BEGIN
    IF EXISTS(SELECT table_name 
                FROM INFORMATION_SCHEMA.TABLES
               WHERE table_name LIKE 'User')
    THEN
       ALTER TABLE User DROP FOREIGN KEY FK_AccountID;
    END IF;
END //
DELIMITER; 

上面的更新是我的新更改,它在末尾報告錯誤Delimiter: Delimiter is not valid input at this position

這個答案來自@Solarflare,因為他/她沒有發布答案,所以我去做,這樣我就可以將此問題標記為已回答,這可能對其他可能遇到與我同樣問題的新手很方便。

您必須在定界符和之間留一個空格。

暫無
暫無

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

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