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


從mysqlV5.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 這個語句關閉先前打開的游標,注意,用完后必須關閉。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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