0

ショッピング カート用に作成しようとしている次の準備済みステートメントがありますが、正しく実行されません。次のエラーが報告され、修正方法がわかりません。

#1064 - SQL 構文にエラーがあります。near '; を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。END $$' 25 行目

私の知る限り、IF ステートメントの構文は正しいですが、機能しません。

DELIMITER $$
CREATE PROCEDURE shopping_cart_add_product(IN inCartId CHAR(32),
IN inProductId INT, IN inAttributes VARCHAR(1000))
BEGIN
DECLARE productQuantity INT;

SELECT quantity
FROM shopping_cart
WHERE cart_id = inCartId
AND product_id = inProductId
AND attributes = inAttributes
INTO productQuantity;

IF productQuantity IS NULL THEN
INSERT INTO shopping_cart(cart_id, product_id, attributes,
productQuantityuantity, added_on)
VALUES (inCartId, inProductId, inAttributes, 1, NOW());

ELSE  
UPDATE shopping_cart
SET quantity = quantity + 1, buy_now = true
WHERE cart_id = inCartId
AND product_id = inProductId
AND attributes = inAttributes;
ENDIF;
END $$
4

2 に答える 2

1

END $$ の後の $$ を削除し、END と IF の間にスペースを追加します

    END IF;
    END $$
于 2013-05-28T12:18:48.013 に答える
0

下から 2 行目に ENDIF ではなく END IF を指定する必要があります。

http://dev.mysql.com/doc/refman/5.5/en/if.html

...
ELSE  
UPDATE shopping_cart
SET quantity = quantity + 1, buy_now = true
WHERE cart_id = inCartId
AND product_id = inProductId
AND attributes = inAttributes;
END IF;
END $$
于 2013-05-28T12:18:44.077 に答える