dbo.QBM_PSlotResetOnMissingItem_L
Stored ProcedureSQL_STORED_PROCEDURESandbox DB
Interpretation
- Database routine. Review parameters, called procedures, DBQueue inserts, and QBM_PJobCreate helper calls before assuming side effects.
Relations
- No extracted relations.
Typed Edges
- references source dbo.QBM_FGIBitPatternXMarkedForDel source text reference
- references source dbo.QBM_FGICodeName source text reference
- references source dbo.QBM_FGIColumnExists source text reference
- references source dbo.QBM_FGISessionErrorRethrow source text reference
- references source dbo.QBM_FSQProcedureDef source text reference
- references source dbo.QBM_PDBQCS_CurrentMoveSlot source text reference
- references source dbo.QBM_PJournal source text reference
- references source dbo.QBM_PSessionErrorAdd source text reference
- references source dbo.QBM_PSQLCreate source text reference
- references source dbo.QBM_PWaitForSeconds source text reference
References
- dbo.QBM_FGIBitPatternXMarkedForDel
- dbo.QBM_FGICodeName
- dbo.QBM_FGIColumnExists
- dbo.QBM_FGISessionErrorRethrow
- dbo.QBM_FSQProcedureDef
- dbo.QBM_PDBQCS_CurrentMoveSlot
- dbo.QBM_PJournal
- dbo.QBM_PSessionErrorAdd
- dbo.QBM_PSQLCreate
- dbo.QBM_PWaitForSeconds
Referenced By
- dbo.ADS_RAccountInADSGroup
- dbo.ADS_RADSMachineInADSGroup
- dbo.ADS_RBaseTreeHasObject
- dbo.ADS_RBaseTreeOwnsObjectPrepair
- dbo.ADS_RContactInADSGroup
- dbo.ADS_RGroupInADSGroup
- dbo.ADS_ROrgHasADSGroup
- dbo.ADS_RPersonHasObject
- dbo.CPL_RComplianceCheckForPerson
- dbo.LDP_RAccountInLDAPGroup
- dbo.LDP_RBaseTreeHasObject
- dbo.LDP_RBaseTreeOwnsObjectPrepair
- dbo.LDP_RGroupInLDAPGroup
- dbo.LDP_ROrgHasLDAPGroup
- dbo.LDP_RPersonHasObject
- dbo.QER_RAccProductGroupCollection
- dbo.QER_RBaseTreeCollectionF
- dbo.QER_RBaseTreeHasObject
- dbo.QER_RBaseTreeHasObjectExtAtt
- dbo.QER_RHelperHardwareOrg
- dbo.QER_RHelperHeadOrg
- dbo.QER_RHelperHeadPerson
- dbo.QER_RHelperPersonOrg
- dbo.QER_RHelperWorkDeskOrg
- dbo.QER_ROrgHasQERAssign
- dbo.QER_ROrgHasQERResource
- dbo.QER_ROrgHasQERReuse
- dbo.QER_ROrgHasQERReuseUS
- dbo.QER_RPersonCheckDynUser
- dbo.QER_RPersonHasObject
- dbo.QER_RPersonHasObjectExtAtt
- dbo.QER_RPersonHasQERAssign
- dbo.QER_RPersonHasQERResource
- dbo.QER_RPersonHasQERReuse
- dbo.QER_RPersonHasQERReuseUS
- dbo.RMB_RHelperHardwareOrg
- dbo.RMB_RHelperPersonOrg
- dbo.RMB_RHelperWorkDeskOrg
- dbo.RMS_RBaseTreeHasObject
- dbo.RMS_RESetHasEntitlement
- dbo.RMS_ROrgHasESet
- dbo.RMS_RPersonHasESet
- dbo.RMS_RPersonHasObject
- dbo.RMS_RWorkDeskHasESet
- dbo.RPS_RBaseTreeHasObject
- dbo.RPS_ROrgHasRPSReport
- dbo.RPS_RPersonHasObject
- dbo.RPS_RPersonHasRPSReport
- dbo.TSB_RBaseTreeHasObject
- dbo.TSB_RBaseTreeOwnsObjectPrepair
- dbo.TSB_ROrgHasTSBAccountDef
- dbo.TSB_ROrgHasUNSGroupB
- dbo.TSB_ROrgHasUNSGroupB1
- dbo.TSB_ROrgHasUNSGroupB2
- dbo.TSB_ROrgHasUNSGroupB3
- dbo.TSB_RPersonHasObject
- dbo.TSB_RPersonHasTSBAccountDef
- dbo.TSB_RUNSAccountBHasUNSItemB
- dbo.TSB_RUNSAccountBInUNSGroupB
- dbo.TSB_RUNSAccountBInUNSGroupB1
Complete Source
1CREATE PROCEDURE QBM_PSlotResetOnMissingItem_L(2 @DBQueueCurrent QBM_YDBQueueCurrent READONLY,3 @TableName varchar(30),4 @PKColumnName varchar(30),5 @SlotNumber int6)7AS8BEGIN9 DECLARE @erg int = 010 DECLARE @DebugSwitch int = 011 DECLARE @DebugLevel char(1) = 'W'12 DECLARE @ProcName varchar(30)13 DECLARE @ProcDef nvarchar(max)14 DECLARE @ProcBody nvarchar(max)15 DECLARE @OutstandingTest nvarchar(1000)16 DECLARE @SourceName nvarchar(1000)17 DECLARE @ErrorMessage nvarchar(4000)18 DECLARE @ErrorSeverity int19 DECLARE @ErrorState int20 DECLARE @anlegenklappt BIT = 021 DECLARE @waitTime float22 DECLARE @UnComment BIT = 0,23 @Unformat BIT = 124 SET XACT_ABORT OFF25 BEGIN TRY26 SELECT27 @ProcName = dbo.QBM_FGICodeName('PSR',28 CONCAT(@TableName, @PKColumnName))29 IF @DebugSwitch > 030 BEGIN31 SELECT32 @UnComment = 0,33 @Unformat = 0 print @ProcName34 END35 IF dbo.QBM_FGIColumnExists(@TableName,36 'XMarkedForDeletion') = 137 BEGIN38 SELECT39 @OutstandingTest = str(dbo.QBM_FGIBitPatternXMarkedForDel('|OutStanding|', 0)) + ' & b.XMarkedForDeletion > 0'40 END41 ELSE42 BEGIN43 SELECT @OutstandingTest = ''44 END45 WHILE NOT EXISTS(46 SELECT TOP 1 147 FROM sys.objects o48 WHERE49 o.name = @ProcName)50 BEGIN51 IF @DebugSwitch > 052 BEGIN53 print 'dann bauen wir eine'54 END55 SELECT56 @waitTime = convert(float,57 @@spid) / 1000.058 EXEC QBM_PWaitForSeconds @waittime59 SELECT60 @ProcBody = CONCAT('61 declare @SlotNumberSource int62 declare @SlotNumberTarget int63 declare @DBQueueToMove QBM_YDBQCSCurrentToMove 64 declare @outs int = 065 declare @missing int = 066 declare @DebugLevel varchar(1) = '''67 ,68 @DebugLevel,69 '''70 71 SET XACT_ABORT OFF7273 -- befüllen mit den interessanten Einträgen74 insert into @DBQueueToMove(UID_DialogDBQueue)75 select cul.UID_DialogDBQueue76 from @DBQueueCurrent cul -- Suchbedingung77 left outer join '78 ,79 @TableName,80 ' b with (readpast) on cul.UID_Parameter = b.',81 @PKColumnName,82 ' 83 where b.',84 @PKColumnName,85 ' is null86 87 select @missing = @@rowcount8889 ',90 CASE91 WHEN @OutstandingTest > ' ' THEN92 CONCAT('93 insert into @DBQueueToMove(UID_DialogDBQueue)94 select cul.UID_DialogDBQueue95 from @DBQueueCurrent cul -- Suchbedingung96 join '97 , @TableName, ' b with (readpast) on cul.UID_Parameter = b.', @PKColumnName, ' 98 where ', @OutstandingTest,99 '100101 select @outs = @@rowcount 102103 if @outs > 0104 begin105 declare @msg nvarchar(1000) = ''#LDS#DBQueue task not processed because of outstanding elements. Table: {0}.|'' + '''106 , @TableName, ''' + ''|''107108 exec QBM_PJournal @msg, @@procid, ''W'', @DebugLevel, 20109 end ')110 ELSE ''111 END,112 '113114 if @outs + @missing > 0115 begin116117 select @SlotNumberSource = @SlotNumber -- die übergebene Slotnummer118 select @SlotnumberTarget = 0119 120 exec @ret = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove, @SlotNumberSource, @SlotnumberTarget121122 end123124 '125 )126 SELECT127 @SourceName = CONCAT('QBM_PSlotResetOnMissingItem_L',128 '(',129 @TableName,130 '.',131 @PKColumnName,132 ')')133 SELECT134 @procdef = dbo.QBM_FSQProcedureDef(@ProcName,135 '@DBQueueCurrent QBM_YDBQueueCurrent readonly136 , @SlotNumber int137 ',138 @ProcBody,139 @SourceName)140 IF @DebugSwitch > 0141 BEGIN142 print @procdef143 END144 BEGIN145 TRANSACTION146 IF NOT EXISTS(147 SELECT TOP 1 1148 FROM sys.objects o149 WHERE150 o.name = @ProcName)151 BEGIN152 BEGIN TRY153 EXEC QBM_PSQLCreate @Procname,154 'P',155 @procDef,156 @UnComment = @UnComment,157 @Unformat = @Unformat158 SELECT @anlegenklappt = 1159 END TRY160 BEGIN CATCH161 SELECT @anlegenklappt = 0162 END CATCH163 END164 IF @anlegenklappt = 1165 BEGIN166 COMMIT167 SELECT @ErrorMessage = 'angelegt ' + @SourceName168 END169 ELSE170 BEGIN171 ROLLBACK172 SELECT @ErrorMessage = 'bumm ' + @SourceName173 END174 IF @DebugSwitch > 0175 BEGIN176 EXEC QBM_PJournal @Errormessage,177 @@procid,178 'D',179 @DebugLevel180 END181 SELECT182 @waitTime =(convert(float, @@spid) / 1000.0) + 0.4183 EXEC QBM_PWaitForSeconds @waittime184 END185 EXEC @erg = @ProcName @DBQueueCurrent,186 @SlotNumber187 END TRY188 BEGIN CATCH189 EXEC QBM_PSessionErrorAdd DEFAULT190 DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()191 RAISERROR(@Rethrow,192 18,193 1)194 WITH NOWAIT195 END CATCH196 endLabel:197 RETURN(@erg)198 END
Open raw exported source
1create procedure QBM_PSlotResetOnMissingItem_L (@DBQueueCurrent QBM_YDBQueueCurrent readonly , @TableName varchar(30) , @PKColumnName varchar(302) , @SlotNumber int ) as begin declare @erg int = 0 declare @DebugSwitch int = 0 declare @DebugLevel char(1) = 'W' declare @ProcName varchar(30) declare3 @ProcDef nvarchar(max) declare @ProcBody nvarchar(max) declare @OutstandingTest nvarchar(1000) declare @SourceName nvarchar(1000) declare @ErrorMessage4 nvarchar(4000) declare @ErrorSeverity int declare @ErrorState int declare @anlegenklappt bit = 0 declare @waitTime float declare @UnComment bit = 0 ,@Unformat5 bit = 1 SET XACT_ABORT OFF BEGIN TRY select @ProcName = dbo.QBM_FGICodeName('PSR', concat(@TableName, @PKColumnName )) if @DebugSwitch > 0 begin select6 @UnComment = 0 , @Unformat = 0 print @ProcName end if dbo.QBM_FGIColumnExists(@TableName, 'XMarkedForDeletion') = 1 begin select @OutstandingTest = str7(dbo.QBM_FGIBitPatternXMarkedForDel('|OutStanding|', 0)) + ' & b.XMarkedForDeletion > 0' end else begin select @OutstandingTest = '' end while not exists8 (select top 1 1 from sys.objects o where o.name = @ProcName ) begin if @DebugSwitch > 0 begin print 'dann bauen wir eine' end select @waitTime = convert9(float, @@spid) / 1000.0 exec QBM_PWaitForSeconds @waittime select @ProcBody = CONCAT( '10 declare @SlotNumberSource int11 declare @SlotNumberTarget int12 declare @DBQueueToMove QBM_YDBQCSCurrentToMove 13 declare @outs int = 014 declare @missing int = 015 declare @DebugLevel varchar(1) = '''16, @DebugLevel , '''17 18 SET XACT_ABORT OFF1920 -- befüllen mit den interessanten Einträgen21 insert into @DBQueueToMove(UID_DialogDBQueue)22 select cul.UID_DialogDBQueue23 from @DBQueueCurrent cul -- Suchbedingung24 left outer join '25, @TableName, ' b with (readpast) on cul.UID_Parameter = b.', @PKColumnName , ' 26 where b.', @PKColumnName , ' is null27 28 select @missing = @@rowcount2930 '31, case when @OutstandingTest > ' ' then concat('32 insert into @DBQueueToMove(UID_DialogDBQueue)33 select cul.UID_DialogDBQueue34 from @DBQueueCurrent cul -- Suchbedingung35 join '36, @TableName, ' b with (readpast) on cul.UID_Parameter = b.', @PKColumnName , ' 37 where ', @OutstandingTest, '3839 select @outs = @@rowcount 4041 if @outs > 042 begin43 declare @msg nvarchar(1000) = ''#LDS#DBQueue task not processed because of outstanding elements. Table: {0}.|'' + '''44, @TableName, ''' + ''|''4546 exec QBM_PJournal @msg, @@procid, ''W'', @DebugLevel, 2047 end ') else '' end, '4849 if @outs + @missing > 050 begin5152 select @SlotNumberSource = @SlotNumber -- die übergebene Slotnummer53 select @SlotnumberTarget = 054 55 exec @ret = QBM_PDBQCS_CurrentMoveSlot @DBQueueToMove, @SlotNumberSource, @SlotnumberTarget5657 end5859 '60 ) select @SourceName = concat('QBM_PSlotResetOnMissingItem_L' , '(' , @TableName , '.' , @PKColumnName , ')' ) select @procdef = dbo.QBM_FSQProcedureDef61(@ProcName , '@DBQueueCurrent QBM_YDBQueueCurrent readonly62 , @SlotNumber int63 ' , @ProcBody , @SourceName ) if @DebugSwitch > 064 begin print @procdef end begin transaction if not exists (select top 1 1 from sys.objects o where o.name = @ProcName ) begin BEGIN TRY exec QBM_PSQLCreate65 @Procname, 'P', @procDef, @UnComment = @UnComment, @Unformat = @Unformat select @anlegenklappt = 1 END TRY BEGIN CATCH select @anlegenklappt = 0 END 66CATCH end if @anlegenklappt = 1 begin commit select @ErrorMessage = 'angelegt ' + @SourceName end else begin rollback select @ErrorMessage = 'bumm '67 + @SourceName end if @DebugSwitch > 0 begin exec QBM_PJournal @Errormessage, @@procid, 'D', @DebugLevel end select @waitTime = (convert(float, @@spid68) / 1000.0) + 0.4 exec QBM_PWaitForSeconds @waittime end exec @erg = @ProcName @DBQueueCurrent, @SlotNumber END TRY BEGIN CATCH exec QBM_PSessionErrorAdd69 default declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT END CATCH endLabel: return (@erg) end70 71