我正在尝试使用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行
答案 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 ;