MySql 游标

-- 定义分隔符为 //
DELIMITER //
    
-- 创建存储过程
CREATE PROCEDURE bat_insert_data()
BEGIN
    -- 定义变量,提示:定义变量语句 需要放在 定义游标语句 之前
    declare var_id int;
    declare var_tableName varchar(128);
 
    -- 定义游标查询结束标识
    declare done int default false;
    -- 定义游标
    declare cur cursor for select id, TableName FROM crm_wf_form     ;
    -- 当 fetch 游标未发现数据时,done 置为 TRUE
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    -- 开启游标
    open cur;
 
    -- 游标遍历数据:
    read_loop: loop
        fetch cur into var_id, var_tableName;
        
        if done then
            leave read_loop;
        end if;
        
        # 在这里处理每一行数据
        IF EXISTS (
        SELECT * FROM crm_wf_form_range WHERE DeptID=10 and FormID = var_id
    ) THEN
        SELECT 'Table exists.';
    ELSE
        insert into crm_wf_form_range (FormID,DeptID,UserID) VALUES (var_id,10,0);
    END IF;
        
        
    end loop;
    -- 关闭游标
    close cur;
-- 存储过程结束
END //
 
-- 恢复定义分隔符为 ;
DELIMITER ;
 
SHOW PROCEDURE STATUS;
 
CALL bat_insert_data();
 
DROP PROCEDURE IF EXISTS bat_insert_data;


    

注意分号,mysql要求严格

posted @ 2025-01-09 15:23  竹殇  阅读(10)  评论(0)    收藏  举报