我正在尝试创建一个存储过程,检查表是否存在。
如果确实如此,我想删除它并创建一个新的。否则,只需创建它。
这是代码。
DELIMITER \\
CREATE PROCEDURE spCheckGraph (OUT var1 INT)
BEGIN
DECLARE var0 INT;
SELECT COUNT(*) INTO var1 FROM GRAPH_SUMMARY;
IF var1 =0 THEN
CREATE TABLE GRAPH_SUMMARY(
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gender varchar(10),
purpose_abroad_as_per_recorded_travel varchar(255),
country_name varchar(255)
);
ELSE
Drop table GRAPH_SUMMARY;
CREATE TABLE GRAPH_SUMMARY(
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gender varchar(10),
purpose_abroad_as_per_recorded_travel varchar(255),
country_name varchar(255) ;
END IF;
END \\
DELIMITER ;
它抛出了这个错误:
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法;万一;结束'第18行
答案 0 :(得分:5)
错误发生在您的else
区块中。您缺少create table...
语句的右括号。
使用以下命令更新您的else块
ELSE
Drop table GRAPH_SUMMARY;
CREATE TABLE GRAPH_SUMMARY(
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gender varchar(10),
purpose_abroad_as_per_recorded_travel varchar(255),
country_name varchar(255)
);
END IF;
更新:
要删除已存在的程序,您可以执行以下操作:
DROP PROCEDURE IF EXISTS `spCheckGraph`;
DELIMITER \\
CREATE PROCEDURE spCheckGraph (OUT var1 INT)
BEGIN
...
END;
\\
DELIMITER ;