Неизвестная системная переменная "no_more_data" в хранимой процедуре Mysql - PullRequest
2 голосов
/ 29 апреля 2011

Я новичок в использовании хранимой процедуры mysql.Есть ошибка, которую я не могу исправить, это мой код

DELIMITER $$

CREATE PROCEDURE `bankdb`.`charge` () 
BEGIN
DECLARE idcust_val INT;
DECLARE balance_val FLOAT;
DECLARE productCd_val VARCHAR(10);

DECLARE loop_cntr INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;

DECLARE col_cur CURSOR FOR
select c.cust_id, c.balance, c.product_cd
from account c;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = TRUE;

OPEN col_cur;
select FOUND_ROWS() into num_rows;

read_loop: LOOP
FETCH col_cur INTO idcust_val, balance_val, productCd_val;

IF no_more_rows THEN
close col_cur;
leave read_loop;
END IF;

IF productCd_val == 'SAV' || productCd_val == 'CD' THEN
    IF balance_val == 2000 THEN
          balance_val = balance_val-10;
          UPDATE account SET avail_balance = balance_val
          WHERE account_id =idcust_val;
    END IF;
END IF;

IF productCd_val == 'CHK' || productCd_val == 'SAV' || productCd_val == 'MM'
|| productCd_val == 'CD' THEN
  balance_val = balance_val + (balance_val*0,05);
  UPDATE account SET avail_balance = balance_val
  WHERE account_id =idcust_val;
ELSE
  balance_val = balance_val - (balance_val*0,1);
  UPDATE account SET avail_balance = balance_val
  WHERE account_id =idcust_val;
END IF;
 SET loop_cntr = loop_cntr + 1;
END LOOP;
END $$

DELIMITER ;

, когда я его выполняю, в браузере запросов mysql отображается ошибка, подобная этой:

Строка сценария: 3 Неизвестная системапеременная no_more_rows

, пожалуйста, помогите мне !!

1 Ответ

2 голосов
/ 29 апреля 2011
  1. Переменная no_more_rows должна быть отсрочена, напишите следующую строку в начале тела процедуры.

    ОБЪЯВИТЬ no_more_rows INT ПО УМОЛЧАНИЮ 0;

  2. Оператор равно '='

    ЕСЛИ productCd_val == 'SAV' ​​и т. Д. Должно быть ЕСЛИ productCd_val = 'SAV' ​​

  3. Используйте команду SET для назначения значений, например, -

    SET balance_val = balance_val - 10;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...