首頁 資料庫 mysql教程 mysql使用游标进行删除操作的存储过程_MySQL

mysql使用游标进行删除操作的存储过程_MySQL

Jun 01, 2016 pm 12:59 PM
遊標 過程

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_>=&#39;2014-0-0 0:0:0&#39; and START_<&#39;2015-0-0 0:0:0&#39;;

/* 声明历史活动实例的游标 */
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 &#39;02000&#39; SET doneFlag = 1;

/** 删除s,使用嵌套循环..... **/

OPEN hprocessInstanceRS;
FETCH hprocessInstanceRS INTO hprocessInstanceId,hprocessInstanceIdStarttime,hprocessInstanceIdEndtime;-- 获取历史流程实例表的数据数据

REPEAT
IF hprocessInstanceIdEndtime=&#39;&#39; 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万-百万条数据量删除非常慢,有什么解决方法没有?

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

推薦最佳的 Windows 11 滑鼠遊標方案 推薦最佳的 Windows 11 滑鼠遊標方案 Apr 23, 2023 am 09:52 AM

Windows11擁有看似無限量的自訂選項,從預設設定到網路上的所有第三方應用程式。甚至有一些應用程式可以改變滑鼠遊標的外觀。修改遊標是使電腦具有獨特外觀的好方法。您不必在每台電腦上貼上相同的、無聊的黑白指針。但即便如此,您也不必下載軟體來更改遊標的外觀。如何更改遊標的外觀? Windows11為遊標提供了少量的自訂。您可以透過進入控制台來變更遊標,並在此處選擇滑鼠選項。將出現一個名為「滑鼠屬性」的新視窗。在滑鼠屬性中,您可以變更配色方案、大小和設計。您的計算機自然會在其文

重返未來19996-24怎麼過 重返未來19996-24怎麼過 Mar 02, 2024 pm 12:58 PM

重返未來1999中玩家會在其中面對很多的關卡挑戰,而且其中一個個不同的關卡所帶來的挑戰都完全不一樣,而6-24作為其中一個關卡,也肯定會有不少玩家想知道這一關卡該如何去進行挑戰吧,所以下面也是會帶來相關的通關方法了。重返未來19996-24通關方法1、一句話掛30層燃燒後,等boss眩暈一頓胖揍。 2、一回合優先用主C和142d掛燃燒。 3.二回合用輔助和奶媽小技能掛燃燒+和主c卡攢個大招。 4.三回合頭目就暈了,然後直接用大招和傷害技能胖揍。

鳴潮異想奇境難度3怎麼過 鳴潮異想奇境難度3怎麼過 Feb 28, 2024 pm 10:19 PM

鳴潮異想奇境難度3怎麼過通關方式分享。鳴潮裡面很多人都在通關這個異想奇境難度3了呢,這一關其實還是有點難度的,很多小伙伴們還不知道該怎麼辦比較好,不過不用擔心,小編為大家帶來了其中的攻略,你也來試試看。鳴潮異想奇境難度3怎麼過鳴鐘之龜角色強化共鳴技能可以提升我們氣動的效果了,這樣一來打出的攻擊效率也會提升到,傷害也會更加的大的,不過大家要是有效果替換也是可以換取的。 〔隱喻〕前三關選擇:林中驕陽:可以讓忌炎的傷害提升很多,技能的使用次數變多的話那麼可以打出非常不錯的暴擊效果了。防護裝置:用共鳴技

解釋C語言中選擇排序的過程 解釋C語言中選擇排序的過程 Sep 01, 2023 pm 01:57 PM

選擇排序是一種攻擊性演算法,用於從數組中找到最小的數字,然後將其放置到第一個位置。下一個要遍歷的陣列將從索引開始,靠近放置最小數字的位置。選擇排序的過程選擇元素清單中第一個最小的元素並將其放置在第一個位置。對清單中的其餘元素重複相同的操作,直到所有元素都獲得已排序。考慮以下列表-第一次通過Sm=a[0]=30Sma[1]

win10升級所需時間詳細解析 win10升級所需時間詳細解析 Jan 10, 2024 am 12:00 AM

很多的小夥伴都想將自己的電腦系統升級為win10系統,但是不清楚升級過程需要多久,今天就給你們帶來了更新到win10需要時間詳細介紹,快來一起看看吧。更新到win10要多久:1.根據每個用戶機器性能的不同大約40分鐘~2/3小時左右不等。 2.配置效能的不同時間也不同,與舊系統資料的多寡也有密切關係。 3.如果電腦的東西很多加上是機械式鍵盤的話會更加的慢速。 4.如果是從win7/8升級win10的話差不多在一個半小時​​左右。 5.升級前要提前預留足夠的時間,備份重要的東西以免失去。

龍之信條2小小的冒險怎麼過 龍之信條2小小的冒險怎麼過 Mar 26, 2024 am 08:10 AM

小小的冒險作為龍之信條中的一個前期的支線,那麼這個任務要怎麼樣才能夠完成呢?玩家首先需要前往梅維,在這裡的雜貨店接受這個任務,購買藥丸就可以完成這個支線,總的來說還是很簡單的,詳細的內容可以在這篇小小的冒險任務圖文攻略之中進行了解,一起來看看吧。龍之信條2小小的冒險怎麼過1、先透過搭乘維綸沃茲北部的牛車前往梅維。 2.到達梅維之後,前往倫奈的道具帶你,在這裡和NPC進行對話開啟任務。 3.隨後玩家進入到門後的商店,在這裡和大叔進行對話,購買藥丸。 4.購買之後,回到門口,將藥丸提供給NPC。 5、隨後

Golang編譯過程詳解 Golang編譯過程詳解 Mar 07, 2024 am 09:24 AM

Golang編譯過程詳解Golang(也稱為Go)是一種由Google開發的程式語言,它具有簡潔、高效、並發等特點,因此受到了廣泛的關注和應用。在使用Golang進行程式設計時,編譯是一個非常重要的環節,本文將詳細介紹Golang的編譯過程,並提供具體的程式碼範例。一、Golang原始碼的編譯過程詞法分析(LexicalAnalysis)在編譯過程中的第一步是詞

如何有效完成笑傲江湖手遊冥想試煉? 如何有效完成笑傲江湖手遊冥想試煉? Jan 30, 2024 pm 06:48 PM

小夥伴們,小編今天帶給大家的是新笑傲江湖手遊冥想試煉的詳細攻略分享。接下來,我們一起來看看小編整理的冥想試煉打法的內容。如果你對此有興趣,就快去遊戲裡試試看。新笑傲江湖手遊冥想試煉怎麼過冥想試煉:冥想試煉還是比較吃操作的,這裡教幾個小技巧。 1)聚怪,盡量讓前幾波小怪在最後一波時候都盡量在殘血狀態。 2)第一次加攻擊狀態用在在第二波怪刷新,配合自己的技能爆發,快速壓低*波和第二波小怪的血量。 3)第二次加攻擊狀態用在最後10S最後一波怪刷新,配合絕學的一波傷害瞬間清屏,剩下的幾隻小怪用技能

See all articles