`

MYSQL通过SQL脚本创建存储过程(游标删除多表数据)

阅读更多
首先描述一下业务处理存储过程功能:删除除系统管理员创建的角色和对应的业务表数据。
[size=medium]
--  CALL P_INTSYS('%_10006%','10006');
drop procedure if exists wmscloud_test.P_INTSYS;

CREATE PROCEDURE wmscloud_test.P_INTSYS(IN likeTableName VARCHAR(30),IN esCorCode VARCHAR(30))

BEGIN
 
  -- 需要定义接收游标数据的变量 
  DECLARE table_ VARCHAR(50);
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
  -- 游标
  DECLARE cur CURSOR FOR SELECT TABLE_NAME FROM (SELECT TABLE_NAME from information_schema.tables WHERE TABLE_NAME LIKE likeTableName ) allTables;
  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
   -- 开始循环
  read_loop: LOOP

  -- 提取游标里的数据,这里只有一个,多个的话也一样;
  FETCH cur INTO table_;
  -- 声明结束的时候
  IF done THEN
    LEAVE read_loop;
  END IF;

  -- 这里做你想做的循环的事件
    SET @delete_table=CONCAT(' DELETE FROM ',table_,';');
    PREPARE delete_table FROM @delete_table;
    EXECUTE delete_table;
  

  END LOOP;
  -- 关闭游标
  CLOSE cur;

  -- 删除,除去系统管理员创建的外其余用户和角色
  SET @delete_table=CONCAT(' DELETE FROM es_user WHERE CREATOR!=1 and ES_COR_CODE=',esCorCode);
  PREPARE delete_table FROM @delete_table;
  EXECUTE delete_table;

  SET @delete_table=CONCAT(' DELETE FROM es_role WHERE CREATOR!=1 and ES_COR_CODE=',esCorCode);
  PREPARE delete_table FROM @delete_table;
  EXECUTE delete_table;

END
[/size]
执行脚本生成的函数
[size=medium]BEGIN
 
  -- 需要定义接收游标数据的变量 
  DECLARE table_ VARCHAR(50);
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
  -- 游标
  DECLARE cur CURSOR FOR SELECT TABLE_NAME FROM (SELECT TABLE_NAME from information_schema.tables WHERE TABLE_NAME LIKE likeTableName ) allTables;
  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
   -- 开始循环
  read_loop: LOOP

  -- 提取游标里的数据,这里只有一个,多个的话也一样;
  FETCH cur INTO table_;
  -- 声明结束的时候
  IF done THEN
    LEAVE read_loop;
  END IF;

  -- 这里做你想做的循环的事件
    SET @delete_table=CONCAT(' DELETE FROM ',table_,';');
    PREPARE delete_table FROM @delete_table;
    EXECUTE delete_table;
  

  END LOOP;
  -- 关闭游标
  CLOSE cur;

  -- 删除,除去系统管理员创建的外其余用户和角色
  SET @delete_table=CONCAT(' DELETE FROM es_user WHERE CREATOR!=1 and ES_COR_CODE=',esCorCode);
  PREPARE delete_table FROM @delete_table;
  EXECUTE delete_table;

  SET @delete_table=CONCAT(' DELETE FROM es_role WHERE CREATOR!=1 and ES_COR_CODE=',esCorCode);
  PREPARE delete_table FROM @delete_table;
  EXECUTE delete_table;

END[/size]

分享到:
评论

相关推荐

    Mysql中sql语句游标详解

    - **定义**:由`DECLARE CURSOR`语法定义,主要用于Transact_SQL脚本、存储过程和触发器中。 - **应用场景**:主要用于服务器端的数据处理,可以通过客户端发送的SQL语句或存储过程进行管理。 - **特点**:不支持...

    使用MYSQL5创建存储过程procedure

    最后,文件列表中的`tour.sql`可能包含了对旅游业务数据的操作,`sp_create.sql`可能是创建其他存储过程的脚本,而`sp_div_schema.sql`可能涉及对数据库模式的分区操作。这些文件可以作为进一步学习和实践存储过程...

    sql 游标遍历 实例

    在"插入用户.sql"这个文件中,可能包含了一个使用游标的脚本,用于逐条处理用户数据并插入到某个用户表中。这可能是一个批量插入操作,特别是在没有批量插入功能或为了确保插入顺序时非常实用。例如,假设我们有一个...

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

    MySQL存储过程是数据库编程的重要组成部分,它允许程序员在数据库中执行一系列复杂的操作,包括处理数据、控制流程等。其中,游标(Cursor)是数据库处理过程中用于遍历查询结果集的一种机制,尤其在循环操作中非常...

    MySQL存储过程基础教程.pdf

    存储过程的元数据包括其定义、参数信息、执行情况等,可以通过系统表或函数查询这些信息。 #### 14. 详细信息 存储过程可以包含非常复杂的逻辑,包括变量声明、条件判断、循环控制等。 #### 15. 编写长例程的技巧 ...

    mysql初始化SQL转达梦、人大金仓、神州通用(南大通用)SQL脚本

    在数据库管理领域,不同的数据库系统有着不同的SQL语法和特性,这使得在不同数据库间迁移数据或应用时,需要对SQL脚本进行相应的转换。本文将详细介绍如何将MySQL的初始化SQL脚本转换为适用于达梦、人大金仓和神州...

    存储过程:利用游标+临时表实现查询

    - **事务处理**:在执行复杂操作如多表更新、插入、查询、删除时,存储过程可以与事务处理相结合,保证数据的一致性和完整性。 - **安全性**:可以设置特定用户对存储过程的访问权限,增强数据库的安全性。 2. ...

    精通MySQL存储过程和函数

    以上内容概述了MySQL存储过程和函数的基本概念、创建方法、变量定义、条件处理、流程控制、游标使用、预处理语句以及常见问题。通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高...

    mysql 存储过程应用(代码详解)

    在MySQL中,存储过程是一种预编译好的SQL脚本,可以包含复杂的逻辑控制语句、循环结构以及事务处理等功能。通过存储过程,开发者可以在数据库服务器端执行一系列操作,提高应用程序与数据库交互的效率和安全性。 ##...

    python执行sql脚本工具

    Python执行SQL脚本工具是一种利用Python编程语言与MySQL数据库交互的方法,主要应用于自动化处理数据库任务、数据迁移或分析。在Python中,有多种库可以实现这样的功能,如`pymysql`、`mysql-connector-python`等。...

    根据excel数据批量新增或更新mysql的表

    5. **使用cursor执行SQL**:创建数据库游标,通过调用其`execute()`方法执行SQL语句。对于批量操作,可以使用`executemany()`方法提高效率。 6. **提交事务**:确保所有更改都已保存,通过调用连接对象的`commit()`...

    Oracle数据库sql转换mysql数据库工具

    在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,减少手动修改SQL脚本的繁琐工作,同时降低错误率。OracleToMysql.exe很可能就是这个转换工具的执行程序,它可能包含以下功能: 1. **SQL语法转换...

    一个简单的sql循环语句脚本

    在数据库编程中,我们通常使用PL/SQL(Oracle)、T-SQL(Microsoft SQL Server)或存储过程(MySQL)来实现循环结构。本话题将详细讲解一个简单的SQL循环语句脚本及其相关知识。 一、SQL循环语句概述 SQL循环语句...

    存储过程删除mysql中一些表的例子

    在MySQL中,存储过程是一种预编译的SQL脚本,它可以在数据库服务器上执行一系列复杂的操作,如查询、修改数据或执行计算等。存储过程的主要优点在于可以提高代码重用率、减少网络流量并提升安全性。 ### 知识点二:...

    MySQL 存储过程经典教程.pdf

    - **局部变量**: 在存储过程中可以定义局部变量,用于临时存储数据。局部变量的作用域仅限于当前存储过程。 #### 七、循环结构 - 存储过程中可以使用循环结构,如`LOOP`, `WHILE`, `REPEAT`等,实现复杂的数据处理...

    MySQL 5.0 存储过程

    存储过程是一种预先编译并存储在数据库服务器上的SQL脚本或程序块,类似于其他编程语言中的子程序或函数。在MySQL 5.0中,存储过程被归类为两种类型:**存储过程**和**函数**。存储过程主要用于执行一系列复杂的SQL...

    存储过程.zip

    3. **安全性**:通过权限控制,可以限制用户直接操作表,而是通过存储过程进行交互,降低数据误操作的风险。 4. **事务管理**:存储过程内可以包含完整的事务逻辑,确保数据的一致性和完整性。 5. **减少网络通信**...

    PostgreSQL 8.2,Oracle 10g,SQL Server 2005,MYSQL 5.1 脚本例子

    标题 "PostgreSQL 8.2,Oracle 10g,SQL Server 2005,MYSQL 5.1 脚本例子" 提供了关于四个不同数据库管理系统(DBMS)——PostgreSQL 8.2、Oracle 10g、SQL Server 2005 和 MySQL 5.1 的SQL脚本示例。这些脚本通常用于...

    用Python将mysql数据导出成json的方法

    3. **执行SQL查询**: 通过游标对象执行指定的SQL查询,获取所有数据。 4. **获取字段信息**: 从游标对象的`description`属性中获取列名(字段名)。 5. **构建JSON数据**: 遍历查询结果,将每一行数据转化为字典结构...

Global site tag (gtag.js) - Google Analytics