1. 程式人生 > >Mysql:存儲過程遊標不進循環的原因詳解

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

一個 -- 它的 過程 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:存儲過程遊標不進循環的原因詳解