1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        MySQL存儲過程中使用游標和臨時表

        發布時間:  2012/8/29 18:01:11

        MySQL存儲過程中使用游標和臨時表:

        1.BEGIN 
        2.     DECLARE c_egid INTEGER;  3.     DECLARE done INT DEFAULT 0;  4.     DECLARE my_testCursor CURSOR FOR   5.         (SELECT cp.tb_electricGroup_id FROM tb_chargingPole AS cp WHERE cp.tb_chargeStation_id = 12);  6.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;  7.     DROP TABLE IF EXISTS tmp_table;  8.     CREATE TEMPORARY TABLE tmp_table (創建臨時表要寫在DECLARE之后要不會語法錯誤   9.    tmp_egid INTEGER        有的表數據格式變了,例如datetime變timestamp,bit就是0、1等等  10.     ); 
        11.     OPEN my_testCursor;  12.          emp_loop: LOOP 
        13.               FETCH my_testCursor INTO c_egid;    游標有多少列就需要多少個參數  14.               IF done=1 THEN                 這句話的位置很重要,如果不放在開頭的話可能會產生某條數據的重復  15.                     LEAVE emp_loop; 
        16.               END IF;  17.               INSERT INTO tmp_table(tmp_egid) VALUES(c_egid); 將數據插入臨時表  18.          END LOOP emp_loop;  19.     CLOSE my_testCursor;  20.     select * from tmp_table;              21.     TRUNCATE tmp_table;  22.END  這里值得注意的是DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1

        在游標循環中我們使用done是否為0來作為判斷是否退出循環的標準,在普通插入語句中沒有問題

        但是一旦在游標中使用select語句查找出來的東西為null時會觸發Handler,done會從0變為1

        因此游標中有select語句的可以使用應使用其他方式,例如while循環等,下面是個利用判斷結果集長度退出while循環的例子

        1.SELECT COUNT(*) INTO @pageCount FROM tmp_bwGetChargePoleCommunicationtable; 
        2.SET @num = 0;  3.OPEN my_testCursor;  4.    WHILE @num < @pageCount DO 
        5.        SET @num = @num + 1;  6.        FETCH my_testCursor INTO param_id,param_ip,param_port,param_key;  7. 
        8.        IF param_key IS NULL THEN  9.            SELECT kiosk_key INTO @tmpParam_key FROM tb_kiosk WHERE kiosk_id = (SELECT tb_kiosk_id FROM tb_chargingPole WHERE cp_id = param_id);  10.            UPDATE tmp_bwGetChargePoleCommunicationtable SET tmp_key = @tmpParam_key WHERE tmp_id = param_id;  11.        END IF;  12.    END WHILE;  13.CLOSE my_testCursor
         


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线