电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶云星空 业务流程归档存储过程--当前表到历史表.docx

金蝶云星空 业务流程归档存储过程--当前表到历史表.docx_第1页
1/3
金蝶云星空 业务流程归档存储过程--当前表到历史表.docx_第2页
2/3
金蝶云星空 业务流程归档存储过程--当前表到历史表.docx_第3页
3/3
④内部公开请勿外传---此存储过程把当前流程实例数据归档到历史表中,归档3个月前的数据,每运行一次归档1万实例,if(selectobject_id('Proc_BF_BackUpData'))isnotnullbegindropprocProc_BF_BackUpDataendgo--业务流程实例归档是以一个FMasterID中的内容为操作单元的。createprocProc_BF_BackUpDataasbeginDECLARE@everyCountint;DECLARE@AllCountint;DECLARE@Indexint;DECLARE@beginIndexint;DECLARE@endIndexint;set@everyCount=1000;set@AllCount=100;set@Index=0;--得到10000个业务流程实例SELECTtop10000ROW_NUMBER()OVER(ORDERBYFMasterId)ASFId,FMasterIdinto#masterTbFROMt_BF_InstanceGROUPBYFMasterIdHAVINGdatediff(month,max(FStartTime),getdate())>=3;createindexinx_tempMaterIdon#masterTb(FMasterId);--设置需要循环的次数Declare@trueCountint;select@trueCount=MAX(FId)from#masterTb;set@AllCount=@trueCount/@everyCountif@trueCount%@everyCount>0beginset@AllCount=@AllCount+1;end--携带量数据处理临时表createtable#tempAmount(FRouteIdvarchar(36))createindexinx_tempAmounton#tempAmount(FRouteId)---循环处理While@Index<@AllCountbeginset@beginIndex=@Index*@everyCount;set@endIndex=(@Index+1)*@everyCount;1/3④内部公开请勿外传begintry--开启事务begintransaction--携带量数据处理DELETEfrom#tempAmount;insertinto#tempAmountSELECTTEntry.FRouteIdFROM#masterTbTMasterINNERJOINt_BF_InstanceTInstON(TInst.FMasterId=TMaster.FMasterId)INNERJOINt_BF_InstanceEntryTEntryON(TEntry.FInstanceId=TInst.FInstanceId)WHERETMaster.FID>@beginIndexANDTMaster.FID<=@endIndex-----归档到历史表INSERTINTOt_BF_InstanceAmountHis(FDetailId,FRouteId,FSourceField,FTargetField,FAmount,FCreateTime,FBackUpTime)SELECTt0.FDetailId,t0.FRouteId,t0.FSourceField,t0.FTargetField,t0.FAmount,t0.FCreateTime,GETDATE()ASFBackUpTimeFROMt_BF_InstanceAmountt0innerjoin#tempAmountt1ont1.FRouteId=t0.FRouteId;-----删除当前表数据DELETEFROMt_BF_InstanceAmountWHEREFRouteIdIN(selectFRouteIdfrom#tempAmount);--业务流程路线图数据处理,归档到历史表INSERTINTOt_BF_InstanceEntryHis(FRouteId,FInstanceId,FLineId,FSTableId,FSId,FTTableId,FTId,FFirstNode,FCreateTime,FBackUpTime)SELECTt0.FRouteId,t0.FInstanceId,t0.FLineId,ISNULL(t1.FSeq,0)ASFSTableID,t0.FSId,ISNULL(t2.FSeq,0)ASFTTableId,t0.FTId,t0.FFirstNode,t0.FCreateTime,GETDATE()ASFBackUpTimeFROMt_BF_InstanceEntryt0LEFTJOINT_BF_TableDefinet1ON(t0.FSTableName=t1.FTableNumber)LEFTJOINT_BF_TableDefinet2ON(t0.FTTableName=t2.FTableNumber)WHEREFInstanceIdIN(SELECTTInst.FInstanceIdFROM#masterTbTMasterINNERJOINt_BF_InstanceTInstON(TInst.FMasterId=TMaster.FMasterId)WHERETMaster.FID>@beginIndexANDTMaster.FID<=@endIndex);--业务流程路线图数据,删除当前表数据DELETEFROMt_BF_InstanceEntryWHEREFInstanceIdIN(SELECTTInst.FInstanceIdFROM#masterTbTMasterINNERJOINt_BF_InstanceTInstON(TInst.FMasterId=TMaster.FMasterId)WHERETMaster.FID>@beginIndexANDTMaster.FID<=@endIndex);2/3④内部公开请勿外传--业务流程实例数据,归档到历史表INSERTINTOt_BF_InstanceHis(FInstanceId,FFlowId,FSourceId,FMasterId,FStatus,FFirstFormId,FFirstBillId,FFirstBillNo,FStartTime,FBackUpTime)SELECTFInstanceId,FFlowId,FSourceId,FMasterId,FStatus,FFirstFormId,FFirstBillId,FFirstBillNo,FStartTime,GETDATE()ASFBackUpTimeFROMt_BF_InstanceWHEREFMasterIdIN(SELECTFMasterIdFROM#masterTbWHEREFId>=@beginIndexANDFID<=@endIndex);--业务流程实例数据,删除当前表数据DELETEFROMt_BF_InstanceWHEREFMasterIdIN(SELECTFMasterIdFROM#masterTbWHEREFId>=@beginIndexANDFID<=@endIndex);committransaction--select@Index,getDate();endtrybegincatchrollbacktransactionselectERROR_NUMBER()errorNumber,--错误代码ERROR_SEVERITY()errorSeverity,--错误严重级别ERROR_STATE()errorState,--错误状态码ERROR_PROCEDURE()errorProcedure,--出现错误的存储过程或触发器的名称ERROR_LINE()errorLine,--发生错误的行号ERROR_MESSAGE()errorMessageendcatch--下一次循环set@Index=@Index+1;endend3/3

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶云星空 业务流程归档存储过程--当前表到历史表.docx

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信