MySQL 存储过程使用 REPEAT 来打开游标读取数据
时间:2016-05-26 13:52 来源:linux.it.net.cn 作者:IT
mysql>
mysql>
mysql> delimiter $$
mysql> CREATE PROCEDURE myProc (in_customer_id INT)
-> BEGIN
->
-> DECLARE l_first_name VARCHAR(30);
-> DECLARE l_id INT;
-> DECLARE l_city VARCHAR(30);
-> DECLARE l_department_count INT;
-> DECLARE no_more_departments INT;
->
-> DECLARE dept_csr CURSOR FOR
-> SELECT id,first_name, city
-> FROM employee;
->
-> DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
->
-> SET no_more_departments=0;
-> OPEN dept_csr;
-> dept_loop:REPEAT
-> FETCH dept_csr INTO l_id,l_first_name,l_city;
-> IF no_more_departments=0 THEN
-> SET l_department_count=l_department_count+1;
-> END IF;
-> select l_id,l_first_name,l_city;
-> UNTIL no_more_departments
-> END REPEAT dept_loop;
-> CLOSE dept_csr;
-> SET no_more_departments=0;
->
->
-> END$$
Query OK, 0 rows affected (0.00 sec)
(责任编辑:IT)
mysql> mysql> mysql> delimiter $$ mysql> CREATE PROCEDURE myProc (in_customer_id INT) -> BEGIN -> -> DECLARE l_first_name VARCHAR(30); -> DECLARE l_id INT; -> DECLARE l_city VARCHAR(30); -> DECLARE l_department_count INT; -> DECLARE no_more_departments INT; -> -> DECLARE dept_csr CURSOR FOR -> SELECT id,first_name, city -> FROM employee; -> -> DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1; -> -> SET no_more_departments=0; -> OPEN dept_csr; -> dept_loop:REPEAT -> FETCH dept_csr INTO l_id,l_first_name,l_city; -> IF no_more_departments=0 THEN -> SET l_department_count=l_department_count+1; -> END IF; -> select l_id,l_first_name,l_city; -> UNTIL no_more_departments -> END REPEAT dept_loop; -> CLOSE dept_csr; -> SET no_more_departments=0; -> -> -> END$$ Query OK, 0 rows affected (0.00 sec) (责任编辑:IT) |