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_<'2015-0-0 0:0:0'; /* 声明历史活动实例的游标 */ 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万-百万条数据量删除非常慢,有什么解决方法没有?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Windows 11에는 기본 설정부터 인터넷의 모든 타사 앱에 이르기까지 겉보기에 무제한의 사용자 지정 옵션이 있습니다. 마우스 커서의 모양을 변경할 수 있는 앱도 있습니다. 커서를 수정하는 것은 컴퓨터에 독특한 모양을 부여하는 좋은 방법입니다. 모든 컴퓨터에 똑같은 지루한 흑백 포인터를 붙일 필요는 없습니다. 하지만 그렇더라도 커서 모양을 변경하기 위해 소프트웨어를 다운로드할 필요는 없습니다. 커서 모양을 변경하는 방법은 무엇입니까? Windows 11에서는 커서에 대해 약간의 사용자 지정 기능을 제공합니다. 제어판으로 이동하여 마우스 옵션을 선택하면 커서를 변경할 수 있습니다. "마우스 속성"이라는 새 창이 나타납니다. 마우스 속성에서 색 구성표, 크기, 디자인을 변경할 수 있습니다. 컴퓨터는 자연스럽게

Back to the Future 1999에서 플레이어는 다양한 레벨의 도전에 직면하게 되며 각 레벨은 완전히 다른 도전을 가져옵니다. 레벨 중 하나인 6-24에서는 확실히 많은 플레이어가 이 레벨에 도전하는 방법을 알고 있을 것입니다. 다음은 관련 정리 방법도 가져올 것입니다. 백투더퓨처 19996-24 클리어 방법 1. 한 문장으로 레벨 30을 불태운 뒤, 보스가 기절할 때까지 기다렸다가 세게 때린다. 2. 한 라운드에 굽기 위해 메인 C와 142d를 우선적으로 사용합니다. 3. 두 번째 라운드에서는 보조와 유모의 작은 스킬을 사용하여 화상을 입히고 메인 C 카드를 사용하여 큰 움직임을 만듭니다. 4. 보스는 3라운드에 기절한 후 궁극기 이동 및 데미지 스킬로 직접 제압됩니다.

Ming Tide Fantasyland 난이도 3 레벨을 통과하는 방법을 공유하세요. Mingchao의 많은 사람들이 이 판타지 랜드의 레벨 3을 완료하고 있습니다. 이 레벨은 실제로 약간 어렵습니다. 많은 친구들이 아직 무엇을 해야할지 모르지만, 읽어보셨다면 편집자가 알려드릴 것입니다. 거기에 담긴 전략을 직접 체험해 보세요. 울리는 조류 판타지 난이도 3을 통과하는 방법은 무엇입니까? 벨 터틀 캐릭터의 공명 스킬을 강화하면 공력 효과가 향상될 수 있습니다. 그러나 모두가 가지고 있으면 공격 효율이 높아집니다. 효과 교환도 가능합니다. [은유] 처음 3개 레벨 중 하나를 선택하세요. Sun in the Forest: 스킬을 여러 번 사용하면 매우 좋은 치명타 효과를 낼 수 있습니다. 보호 장치: 공진 기술 사용

선택 정렬은 배열에서 가장 작은 숫자를 찾아 첫 번째 위치에 배치하는 데 사용되는 공격적인 알고리즘입니다. 탐색할 다음 배열은 가장 작은 숫자가 배치된 위치에 가까운 인덱스에서 시작됩니다. 선택 정렬 프로세스는 요소 목록에서 첫 번째로 작은 요소를 선택하여 첫 번째 위치에 배치합니다. 모든 요소가 정렬될 때까지 목록의 나머지 요소에 대해 동일한 작업을 반복합니다. 다음 목록을 고려하세요. 먼저 Sm=a[0]=30Sma[1]을 통과하세요.

많은 친구들이 자신의 컴퓨터 시스템을 win10 시스템으로 업그레이드하고 싶어하지만 업그레이드 과정이 얼마나 걸릴지 모릅니다. 오늘은 win10으로 업데이트하는 데 필요한 시간에 대해 자세히 소개했습니다. win10으로 업데이트하는 데 시간이 얼마나 걸립니까? 1. 각 사용자 컴퓨터의 성능에 따라 약 40분에서 2/3시간 정도 걸립니다. 2. 성능을 구성하는 시간도 다르며 이는 기존 시스템의 데이터 양과 밀접한 관련이 있습니다. 3. 컴퓨터에 물건이 많고 기계식 키보드가 있으면 속도가 더욱 느려집니다. 4. win7/8에서 win10으로 업그레이드하는 경우 약 1시간 30분 정도 소요됩니다. 5. 손실을 피하기 위해 중요한 사항을 백업하려면 업그레이드하기 전에 미리 충분한 시간을 확보하십시오.

작은 모험은 Dragon's Dogma의 초기 분기인데, 이 작업을 어떻게 완료할 수 있나요? 플레이어는 먼저 Mevi로 가서 여기 식료품점에서 이 임무를 수락하고 약을 구입하여 이 분기를 완료해야 합니다. 일반적으로 자세한 내용은 이 작은 모험 임무 그래픽 가이드에서 찾을 수 있습니다. 그리고 함께 살펴보세요. Dragon's Dogma 2: 1의 작은 모험에서 살아남는 방법. 먼저 Velenworth 북쪽의 소 수레를 타고 Meve로 가세요. 2. 메비 도착 후 루나이의 소품으로 이동한 후 이곳에 있는 NPC와 대화하여 미션을 시작하세요. 3. 그러면 플레이어는 문 뒤에 있는 가게에 들어가서 여기 있는 삼촌과 대화를 나누고 약을 삽니다. 4. 구매 후 문으로 돌아와서 NPC에게 알약을 건네주세요. 5. 이후

Golang 컴파일 프로세스에 대한 자세한 설명 Golang(Go라고도 함)은 Google에서 개발한 프로그래밍 언어로 단순성, 효율성, 동시성 등의 특성을 갖고 있어 폭넓은 관심과 응용을 받아왔습니다. Golang으로 프로그래밍할 때 컴파일은 매우 중요한 링크입니다. 이 기사에서는 Golang 컴파일 프로세스를 자세히 소개하고 구체적인 코드 예제를 제공합니다. 1. Golang 소스 코드의 컴파일 과정 어휘 분석(LexicalAnalytic) 컴파일 과정의 첫 번째 단계는 단어입니다.

여러분, 오늘 에디터가 여러분께 전해드리는 것은 신작 모바일 게임 '명상재판'에 대한 상세한 전략 공유입니다. 다음으로 편집자가 정리한 명상 시행법을 살펴보자. 이에 관심이 있으신 분들은 꼭 게임에 참여해 보시기 바랍니다. 새로운 Swordsman 모바일 게임에서 명상 시험을 통과하는 방법: 명상 시험은 상당히 까다롭습니다. 다음은 몇 가지 팁입니다. 1) 몬스터 수집 시, 마지막 웨이브에서는 처음 몇 웨이브의 몬스터를 체력이 남아있는 상태로 유지하도록 노력하세요. 2) 1차 공격 상태는 2차 웨이브 몬스터를 리프레시하는 데 사용되며, 자신의 스킬이 터지는 데 협력하여 1차 웨이브와 2차 몬스터의 체력을 빠르게 감소시킵니다. 3) 2차 공격 상태는 마지막 10초 동안의 몬스터 웨이브를 갱신하는 데 사용되며, 고유 데미지 웨이브와 함께 남은 몇 마리의 몬스터가 스킬을 사용하면 즉시 화면이 클리어됩니다.
