Mysql游標使用


mysql V5.5開始,進行了一次大的改變,就是將InnoDB作為默認的存儲引擎。InnoDB支持事務,而且擁有相關的RDBMS特性:ACID事務支持,數據完整性(支持外鍵),災難恢復能力等等。
現在簡單總結一下游標的知識。
(一),認識游標(cursor)
就是一個可讀的標識,用來標識數據取到什么地方了。
(二),游標特性
1,只讀
2,不滾動
3,不敏感的
(三),使用游標
需要強調的是,游標必須在定義處理程序之前被定義,但變量必須在定義游標之前被定義,順序就是變量定義-游標定義-處理程序。
1.定義游標

DECLARE cursor_name CURSOR FOR select_statement

這個語句聲明一個游標。也可以在子程序中定義多個游標,一個塊中的每一個游標必須命名唯一。聲明游標后也是單條操作的。

2. 游標OPEN

OPEN cursor_name--這個語句打開先前聲明的游標。

3. 游標FETCH

FETCH cursor_name INTO var_name [, var_name] ...

這個語句用指定的打開游標讀取下一行(如果有下一行的話),並且前進游標指針至該行。
4. 游標CLOSE

CLOSE cursor_name

5.清除游標

declear cursor_name

這個語句關閉先前打開的游標,注意,用完后必須關閉。
(四)示例,下面是一個存儲過程,里面用到游標,逐條更新數據(批量更新數據)

BEGIN
 DECLARE  no_more_record INT DEFAULT 0;
 DECLARE  pID BIGINT(20);
 DECLARE  pValue DECIMAL(15,5);
 DECLARE  cur_record CURSOR FOR   SELECT colA, colB from tableABC;  /*首先這里對游標進行定義*/
 DECLARE  CONTINUE HANDLER FOR NOT FOUND  SET  no_more_record = 1; /*這個是個條件處理,針對NOT FOUND的條件,當沒有記錄時賦值為1*/

 OPEN  cur_record; /*接着使用OPEN打開游標*/
 FETCH  cur_record INTO pID, pValue; /*把第一行數據寫入變量中,游標也隨之指向了記錄的第一行*/

 WHILE no_more_record != 1 DO
 INSERT  INTO testTable(ID, Value)
 VALUES  (pID, pValue);
 FETCH  cur_record INTO pID, pValue;

 END WHILE;
 CLOSE  cur_record;  /*用完后記得用CLOSE把資源釋放掉*/
END

 


免責聲明!

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



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