MySQL Sytax 错误靠近 if 条件


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 行的"分隔符"附近使用的正确语法

为什么我有错误?我做错了什么?

这是因为您缺少END IF .在此处查看手册

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 ;之间缺少空格

最新更新