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

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 13:01:32
字體:
來源:轉載
供稿:網友

測試表 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 ;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 冀州市| 石嘴山市| 璧山县| 克什克腾旗| 平武县| 巴里| 于都县| 汪清县| 灵丘县| 克拉玛依市| 临洮县| 温州市| 新绛县| 丹寨县| 根河市| 辰溪县| 呈贡县| 陇西县| 赣州市| 建水县| 长宁县| 宜君县| 青神县| 东方市| 凤冈县| 海南省| 醴陵市| 昌宁县| 竹溪县| 江永县| 永和县| 泸溪县| 吴旗县| 界首市| 两当县| 乌鲁木齐市| 伊吾县| 阳江市| 凉山| 沙田区| 自治县|