mysql 游标的使用
生活随笔
收集整理的這篇文章主要介紹了
mysql 游标的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
轉(zhuǎn)載自: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 些數(shù)據(jù) ;
?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. 光標(biāo) 光標(biāo)?
??????????*????????這把?游標(biāo)?異常后?捕捉?
??????????*????????并設(shè)置?循環(huán)使用?變量?tmpname?為?null?跳出循環(huán)。
??????????*/
?????????declare?HANDLER?FOR?SQLSTATE?'02000'?SET?tmpname?=?null;
????
????
????/*開游標(biāo)*/?
?????OPEN?cur1;
?????????/*游標(biāo)向下走一步*/?
?????????FETCH?cur1?INTO?tmpName;
?????????
?????????/*?循環(huán)體?這很明顯?把游標(biāo)查詢出的?name?都加起并用?;?號隔開?*/
??????WHILE?(?tmpname?is?not?null)?DO
??????????set?tmpName?=?CONCAT(tmpName?,";")?;
??????? ? set?allName?=?CONCAT(allName?,tmpName)?;
????????/*游標(biāo)向下走一步*/?
????????FETCH?cur1?INTO?tmpName;
??????END?WHILE;
??
????CLOSE?cur1;
????
????select?allName?;
END;//
call?useCursor()//
?
運行結(jié)果:
+--------------------------------------+
|?allName??????????????????????????????|
+--------------------------------------+
|?f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5;?|
+--------------------------------------+
1?row?in?set?(0.00?sec)
總結(jié)
以上是生活随笔為你收集整理的mysql 游标的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本电脑密码忘记了怎么破解win7 w
- 下一篇: MySQL入门指南