下面的存储过程有什么问题?它告诉我IF语句有语法错误?我把头发拉出来试图解决这个问题。如果我删除“create table”语句,它工作正常,如果我删除“IF END IF”语句也可以正常工作!
CREATE DEFINER=`dbo514733022`@`%` PROCEDURE `si_proc1`(IN `param1` INT, IN `param2` INT) NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER
CREATE TEMPORARY TABLE a(ColumnA int);
IF 4 > 3 THEN
SELECT *
FROM a;
END IF;
答案 0 :(得分:0)
您必须将分隔符更改为除标准;
以外的字符,因为您的过程中有多个语句。
MySQL认为,您的过程在create temporary...
语句之后完成,因此语法错误。通常的查询中不允许使用if ... then
或while
等控制结构。
这样做:
DELIMITER $$
CREATE DEFINER=`dbo514733022`@`%` PROCEDURE `si_proc1`(IN `param1` INT, IN `param2` INT) NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER
CREATE TEMPORARY TABLE a(ColumnA int);
IF 4 > 3 THEN
SELECT *
FROM a;
END IF;
END $$ /*this one ends your procedure*/
DELIMITER ; /*don't forget to change it back to default*/