posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          mysql 游標使用

          Posted on 2008-04-27 17:05 G_G 閱讀(7132) 評論(0)  編輯  收藏 所屬分類: Database
          請使用 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?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>?call?useCursor()//
          +--------------------------------------+
          |?allName??????????????????????????????|
          +--------------------------------------+
          |?f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5;?|
          +--------------------------------------+
          1?row?in?set?(0.00?sec)



          主站蜘蛛池模板: 林州市| 化州市| 永善县| 镇沅| 镇原县| 五峰| 平武县| 库车县| 龙岩市| 碌曲县| 临汾市| 建阳市| 周宁县| 临沧市| 永胜县| 林周县| 潢川县| 仙居县| 乌拉特前旗| 合江县| 平顶山市| 武冈市| 瓦房店市| 东乌珠穆沁旗| 卓资县| 海丰县| 呼玛县| 鄯善县| 乡城县| 普陀区| 花垣县| 隆化县| 武城县| 武强县| 新干县| 凭祥市| 庆阳市| 泾源县| 陇西县| 阿拉尔市| 临西县|