如何在mysql存储过程中声明和设置游标?

zyfwsgd6  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(430)

我正在尝试在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 ;
wsxa1bj1

wsxa1bj11#

别担心,这不是虫子。declare子句用于告诉您的计算机存在一个局部变量。这些操作是在声明之后进行的,方法是确认已声明的现有局部变量。
所以在您的例子中,您尝试在计算机开始计算之后添加一个新的变量声明,这在mysql中是不可能的。您必须找到另一种方法来使用上一个变量。
要将新内容分配给变量,请首先使用declare创建变量,然后使用set作为已声明变量的分配。我将把这个链接留在这里,这样你就可以知道如何使用它。

相关问题