为什么不简单如果ELSE语句在mySql中工作

时间:2010-11-27 22:41:54

标签: mysql stored-procedures if-statement

我正在尝试使用SQLYog中针对mySql数据库的if else语句创建一个简单的存储过程。我不太熟悉mySql语法,所以我希望它很简单,但我不明白为什么这不起作用

CREATE PROCEDURE p(IN Number INT)

IF NUMBER = 1 THEN
SELECT * FROM tblProduct WHERE ProductID = Number
ELSE SELECT * FROM tblProduct WHERE ProductId = 2
END IF

如果有人能帮助我并告诉我哪里出错了,我会很感激。 谢谢你的阅读。

当我尝试执行时,我得到以下内容:

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'ELSE SELECT * FROM tblProduct'附近使用正确的语法,其中intProductId = 2 结束如果'在第5行

3 个答案:

答案 0 :(得分:3)

MySQL中的语句由分号分隔。要用它们创建程序,你会做一个小技巧:

DELIMITER //

CREATE PROCEDURE p(IN Number INT)
BEGIN
    IF NUMBER = 1 THEN
        SELECT * FROM tblProduct WHERE ProductID = Number;
    ELSE
        SELECT * FROM tblProduct WHERE ProductId = 2;
    END IF;
END //

DELIMITER ;

有关更多信息,请查看documentation if / else。

答案 1 :(得分:0)

你需要一个;在你的select语句之后。您还需要在程序正文周围进行BEGIN和END。有关程序的确切语法的大量示例,请参阅the manual

答案 2 :(得分:0)

请记住IF ELSE语句总是在存储过程中使用,触发器不在简单的select查询中。并且ELSE或IF关键字总是写在不在查询前面的新行中。如下所示

正确的语法:

DELIMITER //

CREATE PROCEDURE NAME(IN Number INT)
BEGIN
    IF roll= 1 THEN
        SELECT * FROM table1 WHERE id = roll;
    ELSE
        SELECT * FROM table2 WHERE id = 2;
    END IF;
END //

DELIMITER ;

语法错误:

DELIMITER //

CREATE PROCEDURE NAME(IN Number INT)
BEGIN
    IF roll= 1 THEN  SELECT * FROM table1 WHERE id = roll;
    ELSE   SELECT * FROM table2 WHERE id = 2;
    END IF;
END //

DELIMITER ;