Back to OIM Explorer

dbo.QBM_PSlotResetOnMissingItem_L

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure.

Source: sandbox-db sys.sql_modules

Source size: 4.070 characters

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

Referenced By

Complete Source

SQL198 lines
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
SQL · Raw71 lines
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