我正在尝试在mysql存储过程中使用CURSOR ...我在声明游标时遇到了挑战...我的错误是**错误1064(42000):你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在';
附近使用正确的语法来自TBL_SHOPPING_CART_ITEM的SELECT count(*)INTO countitem SELECT Produ'在第8行 **
请帮我解决这个问题...提前致谢..我的代码如下,
delimiter //
CREATE PROCEDURE placeOrder(IN cartId INT)
BEGIN
DECLARE countitem INT;
DECLARE productId INT;
DECLARE cartId INT;
DECLARE itemDicountAmt INT;
DECLARE itemCursor CURSOR;
SET countitem = SELECT count(*) from TBL_SHOPPING_CART_ITEM
SET itemCursor = SELECT ProductId, Quantity FROM TBL_SHOPPING_CART_ITEM
OPEN itemCursor
WHILE countitem > 0
BEGIN
FETCH itemCursor into productId, cartId;
itemDicountAmt = calculateNetItemStandardDiscountAmount(productId, cartId);
insert into debugtable select concat('item discount amount', itemDicountAmt);
SET countitem = countitem - 1;
END
CLOSE itemCursor
DEALLOCATE itemCursor
END//
delimiter ;
答案 0 :(得分:0)
别担心,这不是一个错误。 DECLARE子句用于告诉您的机器存在本地变量。通过知道现有的声明的局部变量,在声明之后进行操作。
所以在你的情况下,你试图在机器开始计算后添加一个新的变量声明,这在MySQL中是不可能的。你必须找到另一种方法来使用你的上一个变量。
要为变量分配新内容,首先使用DECLARE首先创建变量,然后使用SET作为声明变量的赋值。我将this link留在这里,以便您可以了解如何使用它。