2011-04-29 3 views
2

저는 mysql 저장 프로 시저를 사용하여 새로 생겼습니다. 내가 를 해결할 수없는 오류가 있습니다 나는이 같은 MySQL의 쿼리 브라우저 오류 표시를 실행할 때이 내 코드알 수없는 시스템 변수 "no_more_data"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 ; 

입니다 :

스크립트 라인 : 3 알 수없는 시스템 변수 'no_more_rows'

도와주세요 !!

답변

2
  1. 변수 no_more_rows를 삭제해야하며 프로 시저 본문의 시작 부분에 다음 행을 써야합니다.

    DECLARE no_more_rows INT DEFAULT 0;

  2. 같음 연산자는 '='

    등 productCd_val == 'SAV'및되어야 하는지를 IF productCd_val = 'SAV'

  3. 양수인 값, 예를 들어 사용하는
  4. SET 명령 -

    SET balance_val = balance_val - 10;

+0

큰 대답, 감사합니다 – Frenda

+0

커서를 사용하지 않도록하십시오. – Devart

+0

이것은 여전히 ​​오류입니다 -> 피연산자는 1 열을 포함해야합니다, 왜 ??? – Frenda