我正在尝试在mysql存储过程中使用游标。。。我在声明游标时遇到了挑战。。。i错误是错误1064(42000):您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得使用near'的正确语法;
选择count(*)进入countitem,从第8行的tbl\u shopping\u cart\u item选择produ'
请帮我解决这个问题。。。提前谢谢。。我的代码如下,
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 ;
1条答案
按热度按时间wsxa1bj11#
别担心,这不是虫子。declare子句用于告诉您的计算机存在一个局部变量。这些操作是在声明之后进行的,方法是确认已声明的现有局部变量。
所以在您的例子中,您尝试在计算机开始计算之后添加一个新的变量声明,这在mysql中是不可能的。您必须找到另一种方法来使用上一个变量。
要将新内容分配给变量,请首先使用declare创建变量,然后使用set作为已声明变量的分配。我将把这个链接留在这里,这样你就可以知道如何使用它。