mysql游標的使用

2021-09-07 17:50:20 字數 1572 閱讀 5124

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

但是其中有幾點需要注意,就是為什麼要加入 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游標的使用

這是乙個游標的使用例子.但是其中有幾點需要注意,就是為什麼要加入declare continue handler for sqlstate 02000 set tmpname null 這樣的一句話.如果不加的話將直接報錯.no data zero rows fetched,selected,or ...

MySQL游標的使用

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