示例1-- 创建存储过程之前需判断该存储过程是否已存在，若存在则删除 DROP PROCEDURE IF EXISTS init_reportUrl; -- 创建存储过程 CREATE PROCEDURE init_reportUrl() BEGIN -- 定义变量 DECLARE s int DEFAULT 0; DECLARE report_id varchar(255); DECLARE report_url varchar(256); -- 定义游标，并将sql结果集赋值到游标中 DECLARE report CURSOR FOR select reportId,reportUrl from patrolReportHistory; -- 声明当游标遍历完后将标志变量置成某个值 DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1; -- 打开游标 open report; -- 将游标中的值赋值给变量，注意：变量名不要和返回的列名同名，变量顺序要和sql结果列的顺序一致 fetch report into report_id,report_url; -- 当s不等于1，也就是未遍历完时，会一直循环 while s<>1 do -- 执行业务逻辑 update patrolreporthistory set reportUrl = CONCAT('patrolReport.html?monitorId=',substring(report_url,15,1),'&reportId=',report_id) where reportId=report_id; -- 将游标中的值再赋值给变量，供下次循环使用 fetch report into report_id,report_url; -- 当s等于1时表明遍历以完成，退出循环 end while; -- 关闭游标 close report; END;-- 执行存储过程 call init_reportUrl()示例2-- 创建存储过程之前需判断该存储过程是否已存在，若存在则删除 DROP PROCEDURE IF EXISTS sys_config_uniform_price; -- 创建存储过程 CREATE PROCEDURE sys_config_uniform_price() BEGIN -- 定义变量 DECLARE exe_flag int DEFAULT 0; DECLARE _company_no varchar(255); -- 定义游标，并将sql结果集赋值到游标中 DECLARE obj_config CURSOR FOR SELECT DISTINCT company_no from cms_sys_config WHERE is_sys = 0; -- 声明当游标遍历完后将标志变量置成某个值 DECLARE CONTINUE HANDLER FOR NOT FOUND SET exe_flag=1; -- 打开游标 open obj_config; -- 将游标中的值赋值给变量，注意：变量名不要和返回的列名同名，变量顺序要和sql结果列的顺序一致 fetch obj_config into _company_no; -- 当s不等于1，也就是未遍历完时，会一直循环 while exe_flag<>1 do -- 执行业务逻辑 INSERT INTO `cms_sys_config` ( `id`, `company_no`, `IS_SYS`, `is_switch`, `name`, `keyword`, `conf_value`, `available`, `create_by`, `create_date`, `update_by`, `update_date`, `remarks`, `del_flag` ) VALUES ( UUID(), _company_no, '0', '1', '是否开启出证统一价', 'is_uniform_price', '0', '0', '1', CURRENT_TIME(), '1', CURRENT_TIME(), '', '0' ); INSERT INTO `cms_sys_config` ( `id`, `company_no`, `IS_SYS`, `is_switch`, `name`, `keyword`, `conf_value`, `available`, `create_by`, `create_date`, `update_by`, `update_date`, `remarks`, `del_flag` ) VALUES ( UUID(), _company_no, '0', '1', '是否开启出证统一价', 'is_uniform_price', '0', '0', '1', CURRENT_TIME(), '1', CURRENT_TIME(), '', '0' ); -- 将游标中的值再赋值给变量，供下次循环使用 fetch obj_config into _company_no; -- 当s等于1时表明遍历以完成，退出循环 end while; -- 关闭游标 close obj_config; UPDATE cms_sys_config SET id = REPLACE(id, '-', ''); END; -- 执行存储过程 call sys_config_uniform_price()