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

how to declare & set cursor in MYSQL STORED PROCEDURE?

我正在尝试在 mysql 存储过程中使用 CURSOR...我在声明游标时遇到挑战...我的错误是 **ERROR 1064 (42000):您的程序中有错误SQL语法;查看与您的 MySQL 服务器版本对应的手册,了解在 ';

附近使用的正确语法

SELECT count(*) INTO countitem from TBL_SHOPPING_CART_ITEM SELECT 第 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 ;

别担心,这不是错误。 DECLARE 子句用于告诉您的机器存在局部变量。这些操作是在声明之后进行的,通过了解现有的、声明的局部变量。

所以在你的例子中,你试图在机器开始计算后添加一个新的变量声明,这在 MySQL 中是不可能的。你必须找到另一种方法来使用你的最后一个变量。

要将新内容赋值给变量,首先使用DECLARE 创建您的变量,然后使用SET 作为对已声明变量的赋值。我将 this link 留在此处,以便您了解如何使用它。