Reputation: 203
I am trying to create a stored procedure, checking if a table exists.
If it does, I want to drop it and create a new one. Otherwise, just create it.
Here's the code.
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 ;
It throws this error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; END IF; END' at line 18
Upvotes: 1
Views: 140
Reputation: 38645
The error is in your else
block. You are missing closing parenthesis for the create table...
statement.
Update your else block with:
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;
Update:
To drop procedure if it already exists you'd do the following:
DROP PROCEDURE IF EXISTS `spCheckGraph`;
DELIMITER \\
CREATE PROCEDURE spCheckGraph (OUT var1 INT)
BEGIN
...
END;
\\
DELIMITER ;
Upvotes: 5