if条件附近的mysql语法错误

时间:2012-08-31 11:08:15

标签: mysql

DELIMITER $

DROP PROCEDURE IF EXISTS discount$
CREATE PROCEDURE discount(IN price INT, OUT price_after_discount INT)
BEGIN
  IF (price<100) THEN
       SET price_after_discount=price;
  ELSEIF(price>100 AND price<200) THEN
      SET price_after_discount=(price*0.10)+price;
  ELSE
     SET price_after_discount=(price*0.20)+price;
   END IF;
END$
DELIMITER;

Mysql告诉我第9行有错误:

  

1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“DELIMITER”附近使用正确的语法

为什么会出错?我做错了什么?

1 个答案:

答案 0 :(得分:5)

这是因为你遗漏了END IF。请参见手册here

CREATE PROCEDURE discount(IN price INT, OUT price_after_discount INT)
BEGIN
  IF (price<100) THEN
       SET price_after_discount=price;
  ELSEIF(price>100 AND price<200) THEN
      SET price_after_discount=(price*0.10)+price;//Error here
  ELSE
     SET price_after_discount=(price*0.20)+price;
   END IF;
END$$

DELIMITER ;

通常near '' at line no出现这种错误,如果在IF ELSE .. or BEGIN .. END子句等语句中遗漏了某些内容,则不会告诉确切的行号和代码段。

编辑:您在此DELIMITER ;

之间缺少空格