Heim Datenbank MySQL-Tutorial 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
Nach dem Login kopieren

使用嵌套之后,10万-百万条数据量删除非常慢,有什么解决方法没有?

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Empfehlen Sie die beste Mauszeigerlösung für Windows 11 Empfehlen Sie die beste Mauszeigerlösung für Windows 11 Apr 23, 2023 am 09:52 AM

Windows 11 verfügt über eine scheinbar unbegrenzte Anzahl an Anpassungsmöglichkeiten, von Standardeinstellungen bis hin zu jeder Drittanbieter-App im Internet. Es gibt sogar Apps, die das Aussehen Ihres Mauszeigers ändern können. Das Ändern des Cursors ist eine großartige Möglichkeit, Ihrem Computer ein einzigartiges Aussehen zu verleihen. Sie müssen nicht auf jedem Computer den gleichen langweiligen Schwarz-Weiß-Zeiger anbringen. Aber trotzdem müssen Sie keine Software herunterladen, um das Aussehen Ihres Cursors zu ändern. Wie ändere ich das Aussehen des Cursors? Windows 11 bietet eine kleine Anpassungsmöglichkeit für den Cursor. Sie können den Cursor ändern, indem Sie in die Systemsteuerung gehen und dort Mausoptionen auswählen. Es erscheint ein neues Fenster mit dem Namen „Mauseigenschaften“. In den Mauseigenschaften können Sie Farbschema, Größe und Design ändern. Ihr Computer wird es natürlich tun

Zurück in die Zukunft So verbringen Sie 1996–24 Zurück in die Zukunft So verbringen Sie 1996–24 Mar 02, 2024 pm 12:58 PM

In „Zurück in die Zukunft 1999“ werden die Spieler mit vielen Level-Herausforderungen konfrontiert, und jedes Level bringt völlig andere Herausforderungen mit sich. Als eines der Level werden sicherlich viele Spieler darüber nachdenken. Sie wissen also, wie man dieses Level herausfordert Im Folgenden finden Sie auch relevante Freigabemethoden. Zurück in die Zukunft 1996-24 Freigabemethode 1. Nachdem Sie in einem Satz auf Level 30 gebrannt haben, warten Sie, bis der Boss betäubt ist, und verprügeln Sie ihn heftig. 2. Priorisieren Sie die Verwendung von Haupt-C und 142d, um in einer Runde zu brennen. 3. In der zweiten Runde nutzen Sie die kleinen Fähigkeiten der Hilfs- und Kindermädchen zum Brennen und die Hauptkarte C, um einen großen Zug zu bauen. 4. Der Boss wird in drei Runden betäubt und dann direkt mit seinen ultimativen Bewegungs- und Schadensfähigkeiten geschlagen.

Wuthering WavesSo bestehen Sie den Fantasyland-Schwierigkeitsgrad 3 Wuthering WavesSo bestehen Sie den Fantasyland-Schwierigkeitsgrad 3 Feb 28, 2024 pm 10:19 PM

Teilen Sie uns mit, wie Sie das Level von Ming Tide Fantasyland Schwierigkeitsgrad 3 bestehen. Viele Leute in Mingchao schließen Level 3 dieses Fantasy-Landes ab. Viele Freunde wissen noch nicht, was sie tun sollen, aber keine Sorge, der Herausgeber wird es Ihnen bringen Wenn Sie wissen, welche Strategien darin enthalten sind, kommen Sie vorbei und probieren Sie es aus. Wie kann man den Bell Turtle-Charakter im Schwierigkeitsgrad 3 bestehen? Durch die Stärkung der Resonanzfähigkeiten wird die Angriffseffizienz erhöht und der Schaden kann auch größer sein ausgetauscht. [Metapher] Wählen Sie aus den ersten drei Stufen: Sonne im Wald: Sie kann den Schaden von Ji Yan erheblich erhöhen. Wenn die Fertigkeit öfter verwendet wird, kann sie einen sehr guten kritischen Treffereffekt erzeugen. Schutzeinrichtung: Resonanztechnik verwenden

Erklären Sie den Prozess der Auswahlsortierung in der Sprache C Erklären Sie den Prozess der Auswahlsortierung in der Sprache C Sep 01, 2023 pm 01:57 PM

Die Auswahlsortierung ist ein aggressiver Algorithmus, der verwendet wird, um die kleinste Zahl aus einem Array zu finden und sie an der ersten Position zu platzieren. Das nächste zu durchlaufende Array beginnt am Index, nahe der Stelle, an der die kleinste Zahl platziert ist. Der Prozess der Auswahlsortierung wählt das erste kleinste Element in der Elementliste aus und platziert es an der ersten Position. Wiederholen Sie den gleichen Vorgang für die verbleibenden Elemente in der Liste, bis alle Elemente sortiert sind. Betrachten Sie die folgende Liste – erster Durchgang Sm=a[0]=30Sma[1]

Detaillierte Analyse der für das Win10-Upgrade benötigten Zeit Detaillierte Analyse der für das Win10-Upgrade benötigten Zeit Jan 10, 2024 am 12:00 AM

Viele Freunde möchten ihre Computersysteme auf Win10 aktualisieren, wissen aber nicht, wie lange der Upgrade-Prozess dauern wird. Heute habe ich Ihnen eine detaillierte Einführung in die Zeit gegeben, die für die Aktualisierung auf Win10 erforderlich ist. Wie lange dauert die Aktualisierung auf Win10: 1. Sie variiert zwischen etwa 40 Minuten und 2/3 Stunden, abhängig von der Leistung des Computers jedes Benutzers. 2. Die Zeit zum Konfigurieren der Leistung ist ebenfalls unterschiedlich, was eng mit der Datenmenge im alten System zusammenhängt. 3. Wenn der Computer viele Dinge und eine mechanische Tastatur hat, wird er noch langsamer. 4. Wenn Sie ein Upgrade von Win7/8 auf Win10 durchführen, dauert es etwa eineinhalb Stunden. 5. Planen Sie vor dem Upgrade ausreichend Zeit ein, um wichtige Dinge zu sichern und Verluste zu vermeiden.

So verbringen Sie ein kleines Abenteuer in Dragon's Dogma 2 So verbringen Sie ein kleines Abenteuer in Dragon's Dogma 2 Mar 26, 2024 am 08:10 AM

Ein kleines Abenteuer ist ein früher Zweig in Dragon's Dogma, wie kann diese Aufgabe also abgeschlossen werden? Spieler müssen zuerst zu Mevi gehen, diese Aufgabe hier im Supermarkt annehmen und Pillen kaufen, um diesen Zweig abzuschließen. Den detaillierten Inhalt finden Sie in diesem kleinen grafischen Leitfaden für Abenteuer und gemeinsam einen Blick darauf werfen. So überstehen Sie ein kleines Abenteuer in Dragon's Dogma 2: 1. Fahren Sie zunächst mit dem Ochsenkarren nördlich von Velenworth nach Meve. 2. Nachdem Sie in Mevi angekommen sind, gehen Sie zu Lunnais Requisiten, um Sie mitzunehmen, und führen Sie ein Gespräch mit dem NPC hier, um die Mission zu starten. 3. Dann betritt der Spieler den Laden hinter der Tür, spricht hier mit dem Onkel und kauft Pillen. 4. Kehren Sie nach dem Kauf zur Tür zurück und geben Sie dem NPC die Pillen. 5. Anschließend

Detaillierte Erläuterung des Golang-Kompilierungsprozesses Detaillierte Erläuterung des Golang-Kompilierungsprozesses Mar 07, 2024 am 09:24 AM

Detaillierte Erklärung des Golang-Kompilierungsprozesses Golang (auch bekannt als Go) ist eine von Google entwickelte Programmiersprache. Sie zeichnet sich durch Einfachheit, Effizienz, Parallelität usw. aus und hat daher breite Aufmerksamkeit und Anwendung gefunden. Beim Programmieren mit Golang ist die Kompilierung ein sehr wichtiger Schritt. In diesem Artikel wird der Golang-Kompilierungsprozess ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Kompilierungsprozess der lexikalischen Analyse des Golang-Quellcodes (LexicalAnalysis) Der erste Schritt im Kompilierungsprozess ist das Wort

Wie kann man den Meditationsversuch im Swordsman-Handyspiel effektiv abschließen? Wie kann man den Meditationsversuch im Swordsman-Handyspiel effektiv abschließen? Jan 30, 2024 pm 06:48 PM

Freunde, der Herausgeber präsentiert euch heute einen detaillierten Strategievortrag über den Meditationstest des neuen Swordsman-Handyspiels. Werfen wir als Nächstes einen Blick auf die vom Herausgeber zusammengestellten Meditationsversuchsmethoden. Wenn Sie daran interessiert sind, probieren Sie es im Spiel aus. So bestehen Sie die Meditationsprüfung im neuen Swordsman-Handyspiel: Die Meditationsprüfung ist ziemlich anspruchsvoll. Hier ein paar Tipps. 1) Versuchen Sie beim Sammeln von Monstern, die ersten Monsterwellen während der letzten Welle in einem Restgesundheitszustand zu halten. 2) Der erste Angriffszustand wird verwendet, um die zweite Monsterwelle aufzufrischen und mit dem Ausbruch Ihrer eigenen Fähigkeiten zusammenzuarbeiten, um die Gesundheit der ersten und zweiten Monsterwelle schnell zu verringern. 3) Der zweite Angriffsstatus wird verwendet, um die letzte Monsterwelle in den letzten 10 Sekunden aufzufrischen, und der Bildschirm wird sofort mit einer Schadenswelle durch die einzigartigen Fertigkeiten gelöscht. Die verbleibenden wenigen Monster verwenden Fertigkeiten

See all articles