mysql 游标的使用
生活随笔
收集整理的這篇文章主要介紹了
mysql 游标的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自:http://www.blogjava.net/Good-Game/archive/2008/04/27/196486.html
請使用 mysql 1.5 或以上version;
測試表 level ;
create table test.level (name varchar(20));
再 insert 些數據 ;
?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?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()//
?
運行結果:
+--------------------------------------+
|?allName??????????????????????????????|
+--------------------------------------+
|?f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5;?|
+--------------------------------------+
1?row?in?set?(0.00?sec)
總結
以上是生活随笔為你收集整理的mysql 游标的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本电脑密码忘记了怎么破解win7 w
- 下一篇: MySQL入门指南