0
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構文にエラーがあります。1行目の「DELIMITER」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

なぜエラーが発生するのですか?私は何を間違えますか?

4

1 に答える 1

5

これは、あなたが行方不明だからです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 ;

于 2012-08-31T11:09:46.953 に答える