首先描述一下业务处理存储过程功能:删除除系统管理员创建的角色和对应的业务表数据。
[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]
分享到:
相关推荐
- **定义**:由`DECLARE CURSOR`语法定义,主要用于Transact_SQL脚本、存储过程和触发器中。 - **应用场景**:主要用于服务器端的数据处理,可以通过客户端发送的SQL语句或存储过程进行管理。 - **特点**:不支持...
最后,文件列表中的`tour.sql`可能包含了对旅游业务数据的操作,`sp_create.sql`可能是创建其他存储过程的脚本,而`sp_div_schema.sql`可能涉及对数据库模式的分区操作。这些文件可以作为进一步学习和实践存储过程...
在"插入用户.sql"这个文件中,可能包含了一个使用游标的脚本,用于逐条处理用户数据并插入到某个用户表中。这可能是一个批量插入操作,特别是在没有批量插入功能或为了确保插入顺序时非常实用。例如,假设我们有一个...
MySQL存储过程是数据库编程的重要组成部分,它允许程序员在数据库中执行一系列复杂的操作,包括处理数据、控制流程等。其中,游标(Cursor)是数据库处理过程中用于遍历查询结果集的一种机制,尤其在循环操作中非常...
存储过程的元数据包括其定义、参数信息、执行情况等,可以通过系统表或函数查询这些信息。 #### 14. 详细信息 存储过程可以包含非常复杂的逻辑,包括变量声明、条件判断、循环控制等。 #### 15. 编写长例程的技巧 ...
在数据库管理领域,不同的数据库系统有着不同的SQL语法和特性,这使得在不同数据库间迁移数据或应用时,需要对SQL脚本进行相应的转换。本文将详细介绍如何将MySQL的初始化SQL脚本转换为适用于达梦、人大金仓和神州...
- **事务处理**:在执行复杂操作如多表更新、插入、查询、删除时,存储过程可以与事务处理相结合,保证数据的一致性和完整性。 - **安全性**:可以设置特定用户对存储过程的访问权限,增强数据库的安全性。 2. ...
以上内容概述了MySQL存储过程和函数的基本概念、创建方法、变量定义、条件处理、流程控制、游标使用、预处理语句以及常见问题。通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高...
在MySQL中,存储过程是一种预编译好的SQL脚本,可以包含复杂的逻辑控制语句、循环结构以及事务处理等功能。通过存储过程,开发者可以在数据库服务器端执行一系列操作,提高应用程序与数据库交互的效率和安全性。 ##...
Python执行SQL脚本工具是一种利用Python编程语言与MySQL数据库交互的方法,主要应用于自动化处理数据库任务、数据迁移或分析。在Python中,有多种库可以实现这样的功能,如`pymysql`、`mysql-connector-python`等。...
5. **使用cursor执行SQL**:创建数据库游标,通过调用其`execute()`方法执行SQL语句。对于批量操作,可以使用`executemany()`方法提高效率。 6. **提交事务**:确保所有更改都已保存,通过调用连接对象的`commit()`...
在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,减少手动修改SQL脚本的繁琐工作,同时降低错误率。OracleToMysql.exe很可能就是这个转换工具的执行程序,它可能包含以下功能: 1. **SQL语法转换...
在数据库编程中,我们通常使用PL/SQL(Oracle)、T-SQL(Microsoft SQL Server)或存储过程(MySQL)来实现循环结构。本话题将详细讲解一个简单的SQL循环语句脚本及其相关知识。 一、SQL循环语句概述 SQL循环语句...
在MySQL中,存储过程是一种预编译的SQL脚本,它可以在数据库服务器上执行一系列复杂的操作,如查询、修改数据或执行计算等。存储过程的主要优点在于可以提高代码重用率、减少网络流量并提升安全性。 ### 知识点二:...
- **局部变量**: 在存储过程中可以定义局部变量,用于临时存储数据。局部变量的作用域仅限于当前存储过程。 #### 七、循环结构 - 存储过程中可以使用循环结构,如`LOOP`, `WHILE`, `REPEAT`等,实现复杂的数据处理...
存储过程是一种预先编译并存储在数据库服务器上的SQL脚本或程序块,类似于其他编程语言中的子程序或函数。在MySQL 5.0中,存储过程被归类为两种类型:**存储过程**和**函数**。存储过程主要用于执行一系列复杂的SQL...
3. **安全性**:通过权限控制,可以限制用户直接操作表,而是通过存储过程进行交互,降低数据误操作的风险。 4. **事务管理**:存储过程内可以包含完整的事务逻辑,确保数据的一致性和完整性。 5. **减少网络通信**...
标题 "PostgreSQL 8.2,Oracle 10g,SQL Server 2005,MYSQL 5.1 脚本例子" 提供了关于四个不同数据库管理系统(DBMS)——PostgreSQL 8.2、Oracle 10g、SQL Server 2005 和 MySQL 5.1 的SQL脚本示例。这些脚本通常用于...
3. **执行SQL查询**: 通过游标对象执行指定的SQL查询,获取所有数据。 4. **获取字段信息**: 从游标对象的`description`属性中获取列名(字段名)。 5. **构建JSON数据**: 遍历查询结果,将每一行数据转化为字典结构...