Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL цикъл на курсора, изпълнява един допълнителен кръг, защо?

Манипулаторът, който задава not_found_creadit = 1 , се задейства, когато FETCH не връща редове, но вие проверявате стойността му преди изпълнение на FETCH , така че основното тяло на вашия цикъл ще се изпълни още един път, когато FETCH не успее, тогава цикълът излиза в началото на следващия повторение.

Пренаредете кода си, за да проверите стойността на вашата променлива веднага след FETCH :

credit_loop : LOOP 
    FETCH cur_credit INTO vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
    IF not_found_creadit THEN
        CLOSE cur_credit;
        LEAVE credit_loop;
    END IF;
    SELECT vc_customer, dec_amount, vc_status, vc_user_type, vc_emp, vc_note;
    ......
    ......
END LOOP;


Също така помислете за коригиране на правописа на вашата променлива на not_found_credit



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да използвате канонични функции в Entity Framework и Mysql

  2. Преструктуриране на лоша база данни с PHP цикли или MySQL

  3. Ruby:mysql2-Gem не работи (Mac OS X Snow Leopard, Ruby 1.9.2)

  4. Как мога да коригирам MySQL Load Error

  5. Как да вмъкнете / извлечете файл, съхранен като BLOB в MySQL db с помощта на python