ホームページ データベース 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

最適な Windows 11 マウス カーソル ソリューションを推奨します 最適な Windows 11 マウス カーソル ソリューションを推奨します Apr 23, 2023 am 09:52 AM

Windows 11 には、デフォルト設定からインターネット上のすべてのサードパーティ アプリに至るまで、一見無制限のカスタマイズ オプションがあります。マウスカーソルの外観を変更できるアプリもあります。カーソルを変更することは、コンピュータに独自の外観を与える優れた方法です。すべてのコンピューターに同じ退屈な白黒ポインターを貼り付ける必要はありません。ただし、それでも、カーソルの外観を変更するためにソフトウェアをダウンロードする必要はありません。カーソルの外観を変更するにはどうすればよいですか? Windows 11 では、カーソルの少量のカスタマイズが提供されています。カーソルを変更するには、コントロール パネルに移動し、そこでマウス オプションを選択します。 「マウスのプロパティ」という新しいウィンドウが表示されます。マウスのプロパティでは、配色、サイズ、デザインを変更できます。あなたのコンピュータは自然に

バック・トゥ・ザ・フューチャー 19996-24の過ごし方 バック・トゥ・ザ・フューチャー 19996-24の過ごし方 Mar 02, 2024 pm 12:58 PM

バック・トゥ・ザ・フューチャー 1999 では、プレイヤーは多くのレベルの課題に直面し、各レベルはまったく異なる課題をもたらします。レベルの 1 つである 6 ~ 24 は、間違いなく多くのプレイヤーがそれについて考えているでしょう。このレベルへの挑戦方法は知っているので、以下に関連するクリアランス方法も示します。バック・トゥ・ザ・フューチャー 19996-24 クリア方法 1. レベル 30 を一言で燃やした後、ボスが気絶するのを待って強打します。 2.メインCと142dを優先して1ラウンドで燃やす。 3. 2ラウンド目は補助と乳母の小スキルでバーンとメインのCカードで大技を組み立てます。 4. ボスは 3 ラウンドで気絶させられ、その後究極の移動スキルとダメージ スキルで直接倒されます。

ミンタイドファンタジーランドの難易度3の攻略方法 ミンタイドファンタジーランドの難易度3の攻略方法 Feb 28, 2024 pm 10:19 PM

Ming Tide Fantasyland 難易度 3 のレベルをクリアする方法を共有します。ミンチャオの多くの人が、このファンタジー ランドのレベル 3 を完了しています。このレベルは実際には少し難しいです。多くの友人はまだ何をすればよいかわかりませんが、心配しないでください。編集者がそれを持ってきます。戦略が載っているので、ぜひ試してみてください。 Ringing Tide Fantasy 難易度 3 をクリアするにはどうすればよいですか? ベルタートル キャラクターの共鳴スキルを強化すると、空力効果が向上します。これにより、攻撃効率が向上し、ダメージが大きくなります。エフェクトの差し替えも可能です。 [メタファー] 最初の 3 つのレベルから選択します: 森の太陽: Ji Yan のダメージを大幅に増加させることができ、スキルをより多く使用すると、非常に優れたクリティカル ヒット効果を生み出すことができます。保護装置: 共振技術を使用

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 時間半まで異なります。 2. パフォーマンスを構成する時間も異なります。これは、古いシステムのデータ量に密接に関係しています。 3. コンピューターに多くのものとメカニカル キーボードが搭載されている場合は、さらに遅くなります。 4. win7/8からwin10にアップグレードする場合、約1時間半かかります。 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 のコンパイル プロセスを詳細に紹介し、具体的なコード例を示します。 1. Golang ソースコードのコンパイルプロセス 字句解析 (LexicalAnaracy) コンパイルプロセスの最初のステップは単語です

Swordsman モバイル ゲームで瞑想トライアルを効果的に完了するにはどうすればよいですか? Swordsman モバイル ゲームで瞑想トライアルを効果的に完了するにはどうすればよいですか? Jan 30, 2024 pm 06:48 PM

皆さん、今日編集者が皆さんにお届けするのは、新しいソードマン モバイル ゲームの瞑想トライアルに関する詳細な戦略共有です。次に、編集者がまとめた瞑想の試し方を見ていきましょう。興味のある方はぜひゲーム内で試してみてください。新しいソードマン モバイル ゲームで瞑想の試練に合格する方法: 瞑想の試練は非常に厳しいものです。ここではいくつかのヒントを紹介します。 1) モンスターを集めるときは、最後のウェーブの間、モンスターの最初の数ウェーブを残存体力状態に保つようにしてください。 2) 最初の攻撃状態は、モンスターの第 2 波をリフレッシュするために使用され、自身のスキルのバーストと協力して、モンスターの第 1 波と第 2 波の体力を急速に減らします。 3) 2 番目の攻撃状態は、最後の 10 秒間のモンスターの最後のウェーブを更新するために使用され、ユニークなスキルによるダメージの波で画面が瞬時に消去されます。残りの少数のモンスターはスキルを使用します。

See all articles