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

          mysql 游標使用

          Posted on 2008-04-27 17:05 G_G 閱讀(7121) 評論(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)



          主站蜘蛛池模板: 塔河县| 泰来县| 呼图壁县| 贵定县| 虞城县| 英超| 湄潭县| 镇宁| 治多县| 乐东| 陇川县| 弋阳县| 涿鹿县| 临湘市| 浙江省| 张家川| 胶州市| 布尔津县| 乐清市| 彩票| 铁岭市| 蓬安县| 思茅市| 平陆县| 永安市| 夹江县| 佛学| 鄂伦春自治旗| 泸定县| 紫阳县| 临夏市| 宣武区| 宁河县| 和田县| 山丹县| 盈江县| 湘阴县| 四子王旗| 新平| 武隆县| 满洲里市|