这是我使用mysql游标写的一个存储过程。当然只是初识mysql 的游标
DELIMITER $$
USE `0801`$$
DROP PROCEDURE IF EXISTS `SB_MOLECULE_SPECIES_URL`$$
CREATE DEFINER=`scommerce`@`%` PROCEDURE `SB_MOLECULE_SPECIES_URL`()
BEGIN
#声明变量并附默认值;
DECLARE siteId CHAR(32) DEFAULT 'e61244a8e61244a8f8108745f8108745';
DECLARE createBy CHAR(32) DEFAULT 'f1ecf7eace1511e1968100242cbeedaa';
DECLARE pageId CHAR(32) DEFAULT '7bf8ecf331f111e2a063001e6745fd58';
DECLARE sourceName VARCHAR(255) DEFAULT '';
DECLARE targetName VARCHAR(255) DEFAULT '';
DECLARE done INT DEFAULT 0;
#声明游标
DECLARE mycur CURSOR FOR SELECT source_name ,target_name FROM sc_coj_edge WHERE conjunction_id='870b05eb5e8811e39c86f23c9169b4e1' LIMIT 1;
#如果没有找到数据(有的人此处不写not found 会写 SQLSTATE '02000')则将变量done的值置为1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
#open
打开游标
OPEN mycur;
#开始
循环游标
emp_loop:LOOP
#
FETCH 获取游标当前指针的记录,并传给指定变量列表,注意变量数必须与MySQL游标返回的字段数一致,要获得多行数据,使用循环语句去执行FETCH
FETCH mycur INTO sourceName,targetName;
SELECT done;
#如果变量done = 1 则跳出循环
IF done = 1 THEN
LEAVE emp_loop;
ELSE
#此处根据需要进行相应的表操作;
END IF;
#结束循环
END LOOP emp_loop;
#关闭游标
CLOSE mycur;
END$$
DELIMITER ;