mysql游標的使用

2021-06-17 16:14:57 字數 1576 閱讀 4298

這是乙個游標的使用例子.

但是其中有幾點需要注意,就是為什麼要加入declare continue handler for sqlstate '02000' set tmpname = null;這樣的一句話.

如果不加的話將直接報錯.no data - zero rows fetched, selected, or processed

另外也有人提示過這樣的經驗:

經驗之談:

在mysql的儲存過程一般要設個變數來跟蹤是否not found

declare is_found integer default 1;

declare continue handler for not found set is_found=0;

** 上面這行表示若沒有資料返回,程式繼續,並將變數is_found設為0

這種情況是出現在select xx into *** from tablename的時候發生的,這個時候如果xx是null就會有問題.其實也可以這樣解決

select isnull(***x,0) into aaaa from tablename

這樣如果遇到null就為0了..

/*初始化*/

drop procedure if exists   usecursor //    

/*建立 儲存過程 create */

create procedure usecursor()

begin

/*區域性變數的定義 declare*/

declare tmpname varchar(20) default '' ;

declare allname varchar(255) default '' ;

declare cur1 cursor for select name from test.level;

/*     mysql 不知道為什麼用異常加入判斷 ?

*     此請參考官方文件 20.2.11. 游標 游標

*         這把 游標 異常後 捕捉

*         並設定 迴圈使用 變數 tmpname 為 null 跳出迴圈。

*/declare continue handler for sqlstate '02000' set tmpname = null;

/*開游標*/

open cur1;

/*游標向下走一步*/

fetch cur1 into tmpname;

/* 迴圈體 這很明顯 把游標查詢出的 name 都加起並用 ; 號隔開 */

while ( tmpname is not null) do

set tmpname = concat(tmpname ,";") ;

set allname = concat(allname ,tmpname) ;

/*游標向下走一步*/

fetch cur1 into tmpname;

end while;

close cur1;

select allname ;

end;//

call usecursor()//

mysql 游標的使用

可以用在儲存過程的sql語句主要有以下型別 1 無返回結果語句,如 insert,update,drop,delete等 2 select語句返回單行變數並可傳給本地變數 select into 3 返回多行結果集的select語句,並可使用游標迴圈處理 注意,儲存過程返回的多行結果集,可以被客戶端...

MySQL游標的使用

以下的文章主要介紹的是mysql游標的使用筆記,其可以用在儲存過程的sql語句,其主要型別主要有以下幾種,以下就是對其詳細介紹,相信如果你掌握了這項技術,會在以後的學習或是工作中帶來很大的幫助。1 無返回結果語句,如 insert,update,drop,delete等 2 select語句返回單行...

MySQL游標的使用

在編寫儲存過程時,查詢可能返回多條記錄,如果,資料量非常大,則需要使用游標來逐條讀取查詢結果集中的記錄 游標,是一種用於輕鬆處理多行資料的機制 使用游標處理結果集中的資料,需要先宣告游標 游標,必須宣告在宣告變數 條件之後,宣告處理程式之前 mysql中,使用declare關鍵字來宣告游標 語法格式...