`

mysql 存储过程 循环

阅读更多
-- 数据修复存储过程执行
-- 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 ;

 

0
0
分享到:
评论

相关推荐

    mysql存储过程循环表

    一个简单易理解的mysql存储过程 循环表操作 使用游标

    Mysql存储过程常用语句模板

    Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三...

    mysql存储过程教程

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列SQL语句并封装成一个可重复使用的单元,从而提高数据处理的效率和代码的复用性。本教程将深入探讨MySQL存储过程的创建、调用以及相关概念...

    MySQL实现创建存储过程并循环添加记录的方法

    在MySQL数据库中,存储过程是一种预编译的SQL语句集合,它可以封装一系列的操作,用于执行复杂的业务逻辑。创建存储过程并循环添加记录是数据库管理中的常见任务,尤其是在需要批量插入数据时。以下将详细解释如何在...

    mysql经典教程+mysql存储过程讲解

    本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...

    MySQL存储过程学习

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...

    Mysql存储过程循环内嵌套使用游标示例代码

    总结来说,这个示例展示了如何在MySQL存储过程中使用游标进行循环处理,并在循环内部再次嵌套游标以实现更精细的数据操作。这种技术在处理大量数据或执行复杂逻辑时非常有用,尤其是在需要逐行检查和处理数据的情况...

    MySQL 存储过程入门到精通

    MySQL存储过程是数据库管理系统中的一个重要特性,它允许程序员或数据库管理员预先定义一组SQL语句,形成一个可重用的逻辑单元。在这个“MySQL存储过程入门到精通”资料中,你将深入理解存储过程的原理、创建、调用...

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    MySQL存储过程.rar

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复执行的单元,极大地提高了数据库操作的效率和便捷性。在MySQL中,存储过程可以包含复杂的业务逻辑,比如条件...

    MySQL存储过程.pdf

    MySQL存储过程 MySQL存储过程(Stored Procedure)是一种复杂的数据库对象,允许用户将多个SQL语句组合成一个单一的执行单元,以提高数据库的性能和可维护性。下面是 MySQL 存储过程的相关知识点: 存储过程的定义...

    MySQL循环插入千万级数据

    1、创建测试表 CREATE TABLE `mysql_genarate` ( `id` int(11) NOT NULL AUTO_...2、创建一个循环插入的存储过程 CREATE DEFINER=`root`@`localhost` PROCEDURE `test_two1`( ) BEGIN DECLARE i INT DEFAU

    Mysql存储过程常用语句模板(含变量,if,三种循环等等)

    ### MySQL存储过程常用语句详解 #### 一、概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的流程控制逻辑,如条件判断、循环等,并可接受输入参数、返回单个或多个结果集以及输出参数。通过使用存储...

    mysql 存储过程 实战

    ### MySQL存储过程实战知识点 #### 一、存储过程概述 MySQL 存储过程是一种预编译的 SQL 脚本,它可以包含复杂的逻辑控制结构、循环等操作,并且可以接受参数,执行完后还可以返回结果。存储过程可以提高数据处理...

    mysql存储过程——用于数据库的备份与还原

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许程序员或数据库管理员预编译一系列SQL语句,形成一个可重用的程序单元。在本场景中,我们关注的是如何利用存储过程进行数据库的备份与还原,这在数据管理中至...

    MySQL存储过程 MySQL存储过程

    ### MySQL存储过程详解 #### 一、MySQL存储过程概述 MySQL 存储过程是一种服务器端的编程技术,它允许开发者创建可重复使用的代码模块。这些模块可以包含一系列复杂的 SQL 语句和其他流程控制语句。MySQL 5.0 版本...

    MySQL存储过程基础教程.pdf

    ### MySQL存储过程基础知识点 #### 1. 存储过程的定义和示例 存储过程是存储在MySQL服务器上的预编译的SQL代码段,它能够接受参数、执行一系列的SQL语句和流程控制语句。存储过程可以提高数据库操作的效率,同时...

    MySQL存储过程中游标循环的跳出和继续操作示例

    最近遇到这样的问题,在MySQL的存储过程中,游标操作时,需要执行一个conitnue的操作.众所周知,MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环,方式大同小异.以前从没用过,所以记下来,方便以后查阅. 1....

Global site tag (gtag.js) - Google Analytics