Mysql使用存储过程和游标
时间:2019-02-18 12:54 来源:未知 作者:IT
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)
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) |