這是乙個游標的使用例子.
但是其中有幾點需要注意,就是為什麼要加入 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語句返回單行...