程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql游標示例mysql游標簡易教程

mysql游標示例mysql游標簡易教程

編輯:MySQL綜合教程

mysql游標示例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
這個語句關閉先前打開的游標,注意,用完後必須關閉。


(四)示例,下面是一個存儲過程,裡面用到游標,逐條更新數據(批量更新數據)

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


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved