Mysql:存儲過程游標不進循環的原因詳解


 

 

------------吾亦無他,唯手熟爾,謙卑若愚,好學若飢-------------

 

 

 

本篇博客給剛接觸存儲過程的朋友做個引導作用,目的是解決游標不走循環

很多人發現他的游標,無論是嵌套循環還是單層的循環,都不會走,或者只走一次,但是從數據上看它並不應該走一次,我把結論給大家說一下

 

很多人都有這倆行中的一行

 

   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

 

它的作用是什么呢?

就是在下面的執行過程中,一旦有空記錄(就是沒有返回結果),或者一旦有異常,就會把done設置為1,你循環的時候,判斷的done。所以就會出現循環不走的問題

 

解決方案:

  1.異常的話需要自己排掉

  2.如果是嵌套循環,需要在內層循環結束后加上一個    set done=0;

  3.如果你在循環內或者循環前還查了東西,而它沒有記錄返回,它也會把done改為1,所以,如果你不能刪掉那條查詢語句的話,就得在后面 set done=0;

大致意思就是這樣,可以去嘗試一下!!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM