-- 数据修复存储过程执行 -- CALL REPAIR_SRT_DATAS(); -- 数据修复存储过程 /*DELIMITER $$ -- 把默认的输入的结束符;替换成$$*/ /*DEFINER:创建者*/ DROP PROCEDURE IF EXISTS REPAIR_SRT_DATAS; DELIMITER $$ /*把默认的输入的结束符;替换成$$*/ CREATE DEFINER=`root`@`localhost` PROCEDURE REPAIR_SRT_DATAS() BEGIN DECLARE done INT DEFAULT 0; DECLARE requestCode VARCHAR(20); DECLARE dftHospitalCode VARCHAR(20); DECLARE hospitalCode VARCHAR(20); DECLARE hospitalName VARCHAR(100); /*申请记录中多个医院,设置记录中未生成结算关系*/ DECLARE requDatas CURSOR FOR (SELECT srtr.code,srtr.dm_hospital_code,srtr.dm_hospital_name FROM srt_sett_rela_tran_requ srtr LEFT JOIN srt_sett_rela_tran_set srts ON srtr.code = srts.request_code AND srtr.dm_hospital_code = srts.dm_hospital_code WHERE (SELECT COUNT(t.dm_hospital_code) FROM srt_sett_rela_tran_set t WHERE t.request_code = srtr.code AND t.dm_hospital_code = srtr.dm_hospital_code) = 0); /*游标异常后捕捉并设置变量,done 为 1 跳出循环*/ DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; /*开始事务*/ START TRANSACTION; /*打开游标*/ OPEN requDatas; out_loop: LOOP /*游标向下走一步,将查询出来的值付给定义的变量*/ FETCH requDatas INTO requestCode,hospitalCode,hospitalName; IF done =1 THEN LEAVE out_loop; END IF; /*查询最先插入的医院编码*/ SELECT dm_hospital_code INTO dftHospitalCode FROM srt_sett_rela_tran_set WHERE request_code = requestCode GROUP BY dm_hospital_code ORDER BY id ASC LIMIT 1; /*修复多家医院时,未生成的结算设置记录*/ INSERT INTO srt_sett_rela_tran_set(CODE,MODEL,MATERIAL,UNIT,DM_HOSPITAL_CODE,DM_HOSPITAL_NAME,REQUEST_CODE,CREATOR,CREATE_TIME,MODIFIER,MODIFY_TIME,RESERVED1,RESERVED2,RESERVED3) SELECT CODE,MODEL,MATERIAL,UNIT,hospitalCode DM_HOSPITAL_CODE, hospitalName DM_HOSPITAL_NAME,REQUEST_CODE,REQUEST_DATE,AUDITOR,AUDIT_STATUS,AUDIT_OPINION,AUDIT_TIME,PUBLISH_TIME,CREATOR,CREATE_TIME,MODIFIER,MODIFY_TIME,RESERVED1,RESERVED2,RESERVED3 FROM srt_sett_rela_tran_set WHERE request_code = requestCode AND dm_hospital_code = dftHospitalCode /*and audit_status = 2*/; SET done = 0; END LOOP out_loop; /*关闭游标*/ CLOSE requDatas; -- SELECT dftHospitalCode; /*事务提交*/ COMMIT; END $$ DELIMITER ;
相关推荐
一个简单易理解的mysql存储过程 循环表操作 使用游标
Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三...
本节主要介绍了Mysql存储过程循环内如何嵌套使用游标,详细实现如下,需要的朋友不要错过
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
MySQL存储过程,一键批量修改一个表内的多个列(字段)类型。例如从int转换成varchar
内容概述:通过MySQL存储过程实战的例子,学会使用MySQL存储过程。包含以下内容: 创建无参存储过程、有参存储过程、IF-ELSE存储过程、WHILE循环存储过程、CASE-WHEN条件控制存储过程、REPEAT UNTIL循环存储过程、...
资源包中囊括了MySQL数据库中的存储过程的...该资源下所有内容都是本人的日常软件开发经验总结,对于初学者使用MySQL存储过程的程序员具有重要参考价值,问大家要10分是不过分的,用过就知道了,欢迎大家下载参考及使用
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
mysql存储过程,REPEAT+while 实现嵌套循环。循环内嵌套循环。
Mysql存储过程常用语句模板(含变量,if,三种循环等等)
MySQL存储过程编写总结文档,包括循环结构样式,创建临时表,删除数据,MySQL分页,动态存储过程编写
本文实例讲述了mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法。分享给大家供大家参考,具体如下: MySQL提供循环语句,允许我们根据条件重复执行一个SQL代码块其中有三个循环语句:WHILE,REPEAT和LOOP,我们...
主要介绍了MySQL实现创建存储过程并循环添加记录的方法,涉及基本的mysql存储过程创建、调用相关操作技巧,需要的朋友可以参考下
主要介绍了MySQL存储过程中使用WHILE循环语句的方法,实例分析了在MySQL中循环语句的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
loop 游标双层嵌套循环 创建临时表, 游标
最近遇到这样的问题,在MySQL的存储过程中,游标操作时,需要执行一个conitnue的操作.众所周知,MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环,方式大同小异.以前从没用过,所以记下来,方便以后查阅. 1....
今天分享下自己对于Mysql存储过程的认识与了解,这里主要说说大家常用的游标加循环的嵌套使用
kettle批量导出mysql存储过程,利用kettle的循环批量导出mysql 单个存储过程sql脚本,并生成命令行.source文件