Как объявить и установить курсор в хранимой процедуре MYSQL? - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь использовать CURSOR внутри хранимой процедуры mysql ... Я получаю вызов при объявлении курсора ... Ошибка ** ** ОШИБКА 1064 (42000): в синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ';

SELECT count (*) INTO countite из TBL_SHOPPING_CART_ITEM ВЫБЕРИТЕ 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 ;

1 Ответ

0 голосов
/ 11 мая 2018

Не волнуйтесь, это не ошибка.Предложение DECLARE используется, чтобы сообщить вашей машине о существовании локальной переменной.Операции выполняются после объявлений путем подтверждения существующих объявленных локальных переменных.

Итак, в вашем случае вы попытались добавить новое объявление переменной после того, как машина начала вычислять, что невозможно в MySQL,Вам нужно будет найти другой способ использования вашей последней переменной.

Чтобы назначить новое содержимое для переменной, сначала используйте DECLARE, чтобы сначала создать вашу переменную, а затем используйте SET в качестве присваивания объявленной переменной.Я оставлю эту ссылку прямо здесь, чтобы вы могли узнать, как ее использовать.

...