MySQL存储过程检查表是否存在,然后更改语法错误

MySQL存储过程检查表是否存在,然后更改语法错误,mysql,stored-procedures,syntax,alter,Mysql,Stored Procedures,Syntax,Alter,我的存储过程如下所示: 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 U

我的存储过程如下所示:

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 ....
我在IF结尾有语法错误。我已经尝试了很多方法来解决这个问题,但到目前为止没有成功。如果在DROP过程之后和结束之后添加分隔符//则在结束分隔符处出现错误(此位置的分隔符不是有效输入)。我错过了什么/我是怎么做错的?提前感谢您的回复

已更新


上面更新的是我的新更改,它在结尾分隔符处报告错误:
分隔符在此位置输入无效

此答案来自@Solarflare,因为他/她没有发布答案,我会改为这样做,这样我就可以把这个问题标记为已回答,它可能会对其他可能遇到与我相同问题的新手有用


您必须在分隔符和之间留一个空格


你错过了
after
ALTER TABLE User DROP外键FK_forkey
line?Hi@Evgeny,感谢您的评论。我已经更新了我的问题。请参见上文。您必须在
分隔符
之间留出一个空格多么基本的错误!谢谢Solarflare。请回答下面的问题,这样我可以标记为正确答案。
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;