mysql使用游标删除数据库_mysql 使用游标进行删除操作的存储过程
BEGIN
DECLARE hprocessInstanceId bigint DEFAULT 0; -- 历史流程实例id
DECLARE hprocessInstanceIdStarttime CHAR default ''; -- 历史流程实例启动时间
DECLARE hprocessInstanceIdEndtime CHAR default ''; -- 历史流程实例结束时间
DECLARE hactinstId BIGINT default 0; -- 历史活动实例id
DECLARE htaskId BIGINT default 0; -- 历史人工任务id
DECLARE hvarId BIGINT default 0; -- 历史流程变量id
DECLARE rexecutionId bigint default 0; -- 正在运行流程实例id
DECLARE rvarId bigint default 0; -- 正在运行流程变量id
DECLARE rtaskId bigint default 0; -- 正在运行人工任务id
DECLARE rswinmlanceId bigint DEFAULT 0; -- 泳道id,为了删除partation表记录。本项目无记录
DECLARE processCompleteFlag int default 0; -- 流程是否结束标识
DECLARE taskCompleteFlag int default 0; -- 任务是否结束标识
DECLARE doneFlag INT DEFAULT 0; -- 完毕标识,0:未完毕;1:已完毕
DECLARE notfound INT DEFAULT 0;-- 是否未找到数据 标记
-- 启动事物
-- START TRANSACTION;
/* 声明历史流程实例的游标 */
DECLARE hprocessInstanceRS CURSOR FOR SELECT dbid_,START_,END_ FROM jbpm4_hist_procinst where START_>='2014-0-0 0:0:0' and START_
/* 声明历史活动实例的游标 */
DECLARE hactinstRS CURSOR FOR SELECT dbid_,HTASK_ FROM jbpm4_hist_actinst where HPROCI_=hprocessInstanceId;
/* 声明历史活动实例的游标 */
DECLARE htaskRS CURSOR FOR SELECT dbid_ FROM jbpm4_hist_task where DBID_=hactinstId;
/* 声明历史活动实例的游标 */
DECLARE hvarRS CURSOR FOR SELECT dbid_ FROM jbpm4_hist_var where HTASK_=rtaskId;
/** 声明正在运行流程实例的游标(历史表中由于各种原因未完毕的) **/
DECLARE rexecutionRS CURSOR FOR SELECT dbid_ FROM jbpm4_execution where DBID_=hprocessInstanceId;
/** 声明正在运行流程变量的游标(仅仅删除2014年条件下因为各种原因未完毕的流程实例所相应的流程变量) */
DECLARE rvarRS CURSOR FOR SELECT dbid_ FROM jbpm4_variable where EXECUTION_=hprocessInstanceId;
/** 声明正在运行的人工任务的游标(仅仅是2014年開始的流程实例所相应的) **/
DECLARE rtaskRS CURSOR FOR SELECT dbid_ FROM jbpm4_task where DBID_=rtaskId;
/** 声明泳道的结果集游标。为了删除paritation表。该项目没有记录,实际删除条数为0 **/
DECLARE rswinmlanceRS CURSOR FOR SELECT dbid_ FROM jbpm4_swimlane where dbid_=rswinmlanceId;
/* 异常处理 */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET doneFlag = 1;
/** 删除s,使用嵌套循环..... **/
OPEN hprocessInstanceRS;
FETCH hprocessInstanceRS INTO hprocessInstanceId,hprocessInstanceIdStarttime,hprocessInstanceIdEndtime;-- 获取历史流程实例表的数据数据
REPEAT
IF hprocessInstanceIdEndtime='' THEN
-- 没有结束,运行删除正在运行的流程实例表
/** 1.查询正在运行的流程实例记录s **/
SET rexecutionId=hprocessInstanceId; -- 未完毕的流程实例与正在运行的流程实例id做相应
OPEN rexecutionRS;
FETCH rexecutionRS INTO rexecutionId;
REPEAT
/** 2.查询该流程实例下的全部正在运行的流程变量记录s 2**/
OPEN hvarRS;
FETCH hvarRS INTO rvarId;
REPEAT
/** 3.删除正在运行的流程变量所相应的人工任务记录s 3**/
delete from jbpm4_task where dbid_=rvarId;
/** 3.删除正在运行的流程变量所相应的人工任务记录e 3**/
delete from jbpm4_variable where dbid_=rvarId; -- 单条删除流程变量记录
FETCH hvarRS INTO rvarId;
UNTIL doneFlag END REPEAT;
CLOSE hvarRS;
/** 2.查询该流程实例下的全部正在运行的流程变量记录e 2**/
delete from jbpm4_execution where dbid_=rexecutionId; -- 单条删除流程对象记录
FETCH rexecutionRS INTO rexecutionId;
UNTIL doneFlag END REPEAT;
CLOSE rexecutionRS;
END IF;
/*** ======删除历史流程记录表相关数据===== **/
/** 1.查询活动实例表 s **/
OPEN hactinstRS;
FETCH hactinstRS INTO hactinstId,htaskId;
REPEAT
/** 2.查询历史人工活动表记录s **/
OPEN htaskRS;
FETCH htaskRS INTO htaskId;
REPEAT
/** 3.删除历史人工任务 **/
delete from jbpm4_hist_task where dbid_=htaskId;
FETCH htaskRS INTO htaskId;
UNTIL doneFlag END REPEAT;
CLOSE htaskRS;
/** 2.查询历史人工活动表记录s **/
FETCH hactinstRS INTO hactinstId,htaskId;
UNTIL doneFlag END REPEAT;
CLOSE hactinstRS;
/** 1.查询活动实例表 e **/
/*** ======删除历史流程记录表相关数据===== **/
/** 删除历史活动实例表 **/
delete from jbpm4_hist_actinst where HPROCI_=hprocessInstanceId;
SET doneFlag=0;
FETCH hprocessInstanceRS INTO hprocessInstanceId,hprocessInstanceIdStarttime,hprocessInstanceIdEndtime;-- 获取历史流程实例表的数据数据
UNTIL doneFlag END REPEAT;
CLOSE hprocessInstanceRS;
END
使用嵌套之后,10万-百万条数据量删除很慢。有什么解决方法没有?
mysql使用游标删除数据库_mysql 使用游标进行删除操作的存储过程相关推荐
- 什么是mysql的游标_数据库中的游标到底是什么意思
数据库中的游标到底是什么意思 关注:177 答案:2 mip版 解决时间 2021-01-15 20:54 提问者更无风月 2021-01-15 15:53 数据库中的游标到底是什么意思 最佳答案 ...
- mysql数据库表删除数据库_mysql删除数据库和删除数据库中的表
1. select sleep(2);执行睡眠2秒 2. delete from tablename:清空一个表内容,但不清空表结构,该表格仍然存在,而且表格中列的信息不会改变 drop table ...
- 修改mysql 外删除用户_mysql添加用户、删除用户、授权、修改密码等
mysql添加用户.删除用户.授权.修改密码等 1.新建用户. //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> mysql> i ...
- sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL
bitsCN.com MYSQL入门之三_将本地MySQL数据导入SAE数据库 1. MySQL字符集 MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL ...
- mysql使用命令访问数据库_mysql命令操作数据库
命令行创建数据库 CREATE DATABASE rst_xxh DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 显示所有库 show data ...
- mysql 修改多表数据库_mysql数据库:mysql增删改、单表、多表及子查询
本文目录: 一.数据增删改 增加数据 insert [into] 表名[(可选字段名)] values(一堆值1),(一堆值2),..... into 可以省略 表名后的字段可以选 如果写了 后面的v ...
- mysql中如何创建数据库_Mysql 中如何创建数据库和数据表
这里的数据库为:user 数据表为 aaa mysql –uroot –p 进入mysql create database user; 创建数据 ...
- 【MySQL】启动、数据库/数据表 创建/查看/删除
文章目录 1. 启动数据库 mysql -u root -p 2. 数据库创建.查看.删除 2.1 数据库查看 show databases 2.2 选择数据库 select database() m ...
- mysql 创建 utf8 的数据库_mysql创建utf8数据库
CentOS6.5下通过Shell创建.备份.还原MySQL数据库 CentOS6.5下通过Shell创建.备份.还原MySQL数据库 创建数据库: mysql -uroot -p123456 -e ...
最新文章
- 路由和交换机工作原理
- python异常处理类源码_Flask源码异常处理问题
- JNI编译时错误 编码GBK的不可映射字符 解决方法
- jQuery学习笔记(四)——表单选择
- BOOST_TEST_FOREACH宏相关的测试程序
- api-gateway实践(03)新服务网关 - 网关请求拦截检查
- Doris 之Frontend(FE)和Backend(BE)配置
- 备用计算机机房管理制度,计算机机房管理规定
- 对于PS色彩调整的初步认识
- cad怎么把图层英文变成中文_cad图层英文
- 如何提高计算机打字,如何练电脑打字速度,教你如何科学提高打字速度
- DES入盒前的CPA攻击
- Win11 PS2022 打开文件闪退
- 【转】最浅显的LDAP介绍
- 软件测试行业能干的多少岁?是不是真的只能干到35.....
- FlexRay关注事项2_网络总线资源分配问题
- xilinx芯片cadence原理图库制作
- 寄存器就是这么写出来的
- 22.3.8欧拉函数
- 【每周一本书】之《深度学习核心技术与实践》:“小猿搜题”团队倾力之作...
热门文章
- Java中的weak reference 和 soft reference
- 运维工具 Ansible 快速入门教程
- 你需要知道的基础算法知识——STL和基础数据结构(四)
- oracle数据泵导入分区表,Oracle 10g 数据泵分区表的导出
- java web怎么快速设计网页_Javaweb毕业设计快速开发指南(一)
- mysql dns反向解析_DNS练习之反向解析(示例代码)
- mysql 查询语句属性值_MySQL学习——SQL查询语句(一)
- debian apache php mysql_Debian/在Debian上安装Apache Mysql PHP
- JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用 1
- vector 函数都有哪些??