存储过程中的MySQL语法错误

时间:2014-08-17 21:57:24

标签: mysql

下面的存储过程有什么问题?它告诉我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;

1 个答案:

答案 0 :(得分:0)

您必须将分隔符更改为除标准;以外的字符,因为您的过程中有多个语句。

MySQL认为,您的过程在create temporary...语句之后完成,因此语法错误。通常的查询中不允许使用if ... thenwhile等控制结构。

这样做:

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*/
相关问题