> 数据库 > MySQL >

Mysql使用存储过程和游标

DROP PROCEDURE IF EXISTS `PROC_Modify_YID`;
CREATE PROCEDURE PROC_Modify_YID() 
BEGIN
DECLARE  mYID INT;
DECLARE  mFlag INT;
DECLARE  NewYID INT;

-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;

declare auth_cur cursor for SELECT YID,Flag FROM cradle_camera_param;
-- 打开游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true 
open auth_cur;

-- 开始循环
myLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到  
-- 提取游标里的数据,这里只有一个,多个的话也一样;
FETCH auth_cur INTO mYID,mFlag;
-- 声明结束的时候
IF done THEN -- 判断是否继续循环  
LEAVE myLoop; -- 结束循环  
END IF;

set NewYID = mYID + mFlag;
SELECT mYID,mFlag,NewYID;

update cradle_camera_param set YID = NewYID WHERE Flag=mFlag;

COMMIT; -- 提交事务  
END LOOP myLoop; -- 结束自定义循环体 

close auth_cur;
END

CALL PROC_Modify_YID();




(责任编辑:IT)