我的存储过程如下:
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处得到错误(分隔符在此位置不是有效输入)。我错过了什么/我怎么做错了?提前感谢您的回复。
更新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 is not valid input at this position
这个答案来自@Solarflare,因为他/她没有发布答案,所以我将这样做,这样我就可以将这个问题标记为已回答,并且它可能对其他可能遇到同样问题的新手有用。
必须在分隔符和;之间留一个空格