如何在 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 留在此处,以便您了解如何使用它。
我正在尝试在 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 留在此处,以便您了解如何使用它。