激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 基于MySQL游標的具體使用詳解

基于MySQL游標的具體使用詳解

2019-12-28 15:56MYSQL教程網 Mysql

本篇文章是對MySQL游標的具體使用進行了詳細的分析介紹,需要的朋友參考下

測試表 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 游標 異常后 捕捉

 

并設置 循環使用 變量 tmpname 為 null 跳出循環。

復制代碼代碼如下:

declare CONTINUE HANDLER FOR SQLSTATE '02000' SET tmpname = null; 


開游標

復制代碼代碼如下:

OPEN cur1;


游標向下走一步

復制代碼代碼如下:

FETCH cur1 INTO tmpName;


循環體 這很明顯 把MySQL 游標查詢出的 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)


loop循環游標:

復制代碼代碼如下:

DELIMITER $$  

DROP PROCEDURE IF EXITS cursor_example$$  
CREATE PROCEDURE cursor_example()  
     READS SQL DATA  
BEGIN  
     DECLARE l_employee_id INT;  
     DECLARE l_salary NUMERIC(8,2);  
     DECLARE l_department_id INT;  
     DECLARE done INT DEFAULT 0;  
     DECLARE cur1 CURSOR FOR SELECT employee_id, salary, department_id FROM employees;  
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;  

     OPEN cur1;  
     emp_loop: LOOP  
         FETCH cur1 INTO l_employee_id, l_salary, l_department_id;  
         IF done=1 THEN  
             LEAVE emp_loop;  
         END IF;  
     END LOOP emp_loop;  
     CLOSE cur1;  
END$$  
DELIMITER ;  


repeat循環游標:

復制代碼代碼如下:

/*創建過程*/
DELIMITER //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test()
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE a VARCHAR(200) DEFAULT '';
    DECLARE c VARCHAR(200) DEFAULT '';

    DECLARE mycursor CURSOR FOR SELECT  fusername FROM uchome_friend;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    OPEN mycursor;

    REPEAT 
        FETCH mycursor INTO a;
        IF NOT done THEN
            SET c=CONCAT(c,a);/*字符串相加*/
        END IF;

    UNTIL done END REPEAT;

    CLOSE mycursor;

    SELECT c;
END //
DELIMITER ;

 

復制代碼代碼如下:

/*創建過程*/
DELIMITER //
DROP PROCEDURE IF EXISTS test //
CREATE PROCEDURE test()
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE a VARCHAR(200) DEFAULT '';
    DECLARE c VARCHAR(200) DEFAULT '';

    DECLARE mycursor CURSOR FOR SELECT  fusername FROM uchome_friend;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    OPEN mycursor;

    REPEAT 
        FETCH mycursor INTO a;
        IF NOT done THEN
            SET c=CONCAT(c,a);/*字符串相加*/
        END IF;

    UNTIL done END REPEAT;

    CLOSE mycursor;

    SELECT c;
END //
DELIMITER ;

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄污在线观看 | 黄色三级三级三级 | 91精品国产91久久久久久吃药 | 全黄裸片武则天艳史 | 美女羞羞视频网站 | 国产免费美女 | 成人mm视频在线观看 | 欧美不卡在线 | 18视频在线观看娇喘 | 成人爽a毛片免费啪啪红桃视频 | 国产亚洲精品久久 | 国产精品久久久久久久hd | 免费高潮在线国 | 免费毛片a线观看 | 亚洲精品午夜国产va久久成人 | 亚洲欧美在线视频免费 | 国产精品久久久久久久久久 | 国产一区二区三区四区五区精品 | xp123精品视频 | 日本在线高清 | 国产九九九九 | 一本视频在线观看 | 特级黄色小说 | 亚洲国产资源 | 国产在线精品一区二区夜色 | 成人不卡一区二区 | 99久久婷婷国产综合精品青牛牛 | 久久久久久久一区二区三区 | 色综合视频 | 一区二区三区在线观看免费视频 | 99riav视频一区二区 | 久久精品79国产精品 | 成人视屏在线 | 视频一区二区在线播放 | 成人免费福利网站 | 亚洲国产精品久久久久久久久 | 欧美一级性 | 亚洲国产精品久久久久久久久久 | 久久婷婷一区二区三区 | 亚洲第五色综合网 | 麻豆911|