Mysql:存儲過程遊標不進循環的原因詳解
阿新 • • 發佈:2018-07-23
一個 -- 它的 過程 tin hand 朋友 作用 size
------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑-------------
本篇博客給剛接觸存儲過程的朋友做個引導作用,目的是解決遊標不走循環
很多人發現他的遊標,無論是嵌套循環還是單層的循環,都不會走,或者只走一次,但是從數據上看它並不應該走一次,我把結論給大家說一下
很多人都有這倆行中的一行
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;
大致意思就是這樣,可以去嘗試一下!!!!!
Mysql:存儲過程遊標不進循環的原因詳解