国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

基于MySQL游標(biāo)的具體使用詳解

2020-01-18 23:41:25
字體:
供稿:網(wǎng)友

測試表 level ;

復(fù)制代碼 代碼如下:

create table test.level (name varchar(20));

再 insert 些數(shù)據(jù) ;

代碼

初始化

復(fù)制代碼 代碼如下:

drop procedure if exists useCursor //

建立 存儲過程 create
復(fù)制代碼 代碼如下:

CREATE PROCEDURE useCursor()

BEGIN


局部變量的定義 declare
復(fù)制代碼 代碼如下:

declare tmpName varchar(20) default '' ; 
declare allName varchar(255) default '' ; 
declare cur1 CURSOR FOR SELECT name FROM test.level ; 

MySQL 游標(biāo) 異常后 捕捉

并設(shè)置 循環(huán)使用 變量 tmpname 為 null 跳出循環(huán)。

復(fù)制代碼 代碼如下:

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

開游標(biāo)
復(fù)制代碼 代碼如下:

OPEN cur1;

游標(biāo)向下走一步
復(fù)制代碼 代碼如下:

FETCH cur1 INTO tmpName;

循環(huán)體 這很明顯 把MySQL 游標(biāo)查詢出的 name 都加起并用 ; 號隔開
復(fù)制代碼 代碼如下:

WHILE ( tmpname is not null) DO
set tmpName = CONCAT(tmpName ,";") ;
set allName = CONCAT(allName ,tmpName) ;

游標(biāo)向下走一步
復(fù)制代碼 代碼如下:

FETCH cur1 INTO tmpName;

結(jié)束循環(huán)體:
復(fù)制代碼 代碼如下:

END WHILE;

關(guān)閉游標(biāo)
復(fù)制代碼 代碼如下:

CLOSE cur1;

選擇數(shù)據(jù)
復(fù)制代碼 代碼如下:

select allName ;

結(jié)束存儲過程
復(fù)制代碼 代碼如下:

END;//

調(diào)用存儲過程:
復(fù)制代碼 代碼如下:

call useCursor()//

運行結(jié)果:
復(fù)制代碼 代碼如下:

mysql> call useCursor()//

+--------------------------------------+

| allName                              |

+--------------------------------------+

| f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5; |

+--------------------------------------+

1 row in set (0.00 sec)


loop循環(huán)游標(biāo):
復(fù)制代碼 代碼如下:

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循環(huán)游標(biāo):
復(fù)制代碼 代碼如下:

/*創(chuàng)建過程*/
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 ;

復(fù)制代碼 代碼如下:

/*創(chuàng)建過程*/
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 ;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 庄河市| 洪泽县| 新民市| 安陆市| 镇安县| 井冈山市| 始兴县| 崇文区| 沾化县| 正宁县| 屏南县| 泗水县| 宁波市| 敦化市| 诸暨市| 丹东市| 武功县| 肇庆市| 新巴尔虎左旗| 陇南市| 西乌珠穆沁旗| 阿尔山市| 蓝山县| 永安市| 天峻县| 黎城县| 那曲县| 唐海县| 枣强县| 富锦市| 平乐县| 曲麻莱县| 恩平市| 繁峙县| 保康县| 临桂县| 收藏| 来安县| 武宣县| 金塔县| 西华县|