Back to OIM Explorer

dbo.QBM_PWorkDBQueueDelete

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure.

Source: sandbox-db sys.sql_modules

Source size: 3.801 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_FGIDBQueueActivityDisabled source text reference
  • references source dbo.QBM_FGISessionContext source text reference
  • references source dbo.QBM_FGISessionErrorIsDeadlock source text reference
  • references source dbo.QBM_FGISessionErrorIsMissingCo source text reference
  • references source dbo.QBM_FGISessionErrorRethrow source text reference
  • references source dbo.QBM_PDBQueueAgentInfoSet source text reference
  • references source dbo.QBM_PDialogDBQueueDelete source text reference
  • references source dbo.QBM_PQBMDBQueueCurrentDelete source text reference
  • references source dbo.QBM_PQBMDBQueuePondDelete source text reference
  • references source dbo.QBM_PSessionContextSet source text reference
  • references source dbo.QBM_PSessionErrorAdd source text reference
  • references source dbo.QBM_PSessionErrorClean source text reference
  • references source dbo.QBM_PTransactionLevelCheck source text reference
  • references source dbo.QBM_PWaitForSeconds source text reference

Complete Source

SQL161 lines
1CREATE PROCEDURE QBM_PWorkDBQueueDelete(2  @PartToDelete int,3  @RunningSecondsMax int,4  @TimeLimitReached int OUTPUT5)6AS7BEGIN8  DECLARE @procname nvarchar(256) = CONCAT(object_name(@@procid),9  trim(str(@PartToDelete)))10  DECLARE @Starttime datetime = getutcdate()11  SELECT @TimeLimitReached = 012  DECLARE @AnzahlDialogDBQueue int = 013  DECLARE @AnzahlQBMDBQueueCurrent int = 014  DECLARE @AnzahlQBMDBQueuePond int = 015  IF @PartToDelete = 116  BEGIN17    SELECT @AnzahlDialogDBQueue = 118  END19  IF @PartToDelete = 220  BEGIN21    SELECT @AnzahlQBMDBQueueCurrent = 122  END23  IF @PartToDelete = 324  BEGIN25    SELECT @AnzahlQBMDBQueuePond = 126  END27  IF @PartToDelete NOT IN(1,28  2,29  3)30  BEGIN31    GOTO endlabel32  END33  DECLARE @XUser nvarchar(64) = object_name(@@procid)34  DECLARE @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext('')35  DECLARE @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser')36  SET XACT_ABORT OFF37  BEGIN TRY38    EXEC QBM_PSessionContextSet 'XUser',39      @XUser40    IF 0 =(41      SELECT42        min(sign(len(ISNULL(p.name, '')))) AS StartBisHierGeschafft43    FROM(44    VALUES('QBMModuleDef'),('QBM_PSessionErrorAdd'),('QBM_FGISessionErrorIsDeadlock'),('QBM_FGISessionErrorIsMissingCo'),45    ('QBM_FGIDBQueueActivityDisabled'),('QBM_PDialogDBQueueDelete'),('QBM_PQBMDBQueueCurrentDelete'),('QBM_PTransactionLevelCheck'),46    ('QBM_PWaitForSeconds'),('QBMDBQueueCurrent'),('QBM_PQBMDBQueuePondDelete')) AS v(ProcedureName)47    LEFT48    OUTER49    JOIN sys.objects p50      WITH(readpast)51      ON p.name = v.ProcedureName)52    BEGIN53      GOTO EndLabel54    END55    EXEC QBM_PDBQueueAgentInfoSet @procname56    EXEC QBM_PTransactionLevelCheck 0,57      @@procid,58    'at start'59    SET deadlock_priority -1060    SET lock_timeout 5061    WHILE(@AnzahlQBMDBQueueCurrent + @AnzahlDialogDBQueue + @AnzahlQBMDBQueuePond) > 0 AND @TimeLimitReached = 0 AND dbo.QBM_FGIDBQueueActivityDisabled62    () = 063    BEGIN64      SET lock_timeout 5065      IF @AnzahlQBMDBQueueCurrent > 0 AND @PartToDelete = 266      BEGIN67        BEGIN TRY68          EXEC @AnzahlQBMDBQueueCurrent = QBM_PQBMDBQueueCurrentDelete69        END TRY70        BEGIN CATCH71          EXEC QBM_PSessionErrorAdd DEFAULT72          IF dbo.QBM_FGISessionErrorIsDeadlock(DEFAULT) = 0 AND dbo.QBM_FGISessionErrorIsMissingCo(DEFAULT) = 073          BEGIN74            RAISERROR('',75            18,76            1)77              WITH NOWAIT78          END79          ELSE80          BEGIN81            SELECT @AnzahlQBMDBQueueCurrent = 182            EXEC QBM_PSessionErrorClean83          END84        END CATCH85      END86      IF @AnzahlDialogDBQueue > 0 AND @PartToDelete = 187      BEGIN88        BEGIN TRY89          EXEC @AnzahlDialogDBQueue = QBM_PDialogDBQueueDelete90        END TRY91        BEGIN CATCH92          EXEC QBM_PSessionErrorAdd DEFAULT93          IF dbo.QBM_FGISessionErrorIsDeadlock(DEFAULT) = 0 AND dbo.QBM_FGISessionErrorIsMissingCo(DEFAULT) = 094          BEGIN95            RAISERROR('',96            18,97            1)98              WITH NOWAIT99          END100          ELSE101          BEGIN102            SELECT @AnzahlDialogDBQueue = 1103            EXEC QBM_PSessionErrorClean104          END105        END CATCH106      END107      IF @AnzahlQBMDBQueuePond > 0 AND @PartToDelete = 3108      BEGIN109        BEGIN TRY110          EXEC @AnzahlQBMDBQueuePond = QBM_PQBMDBQueuePondDelete111        END TRY112        BEGIN CATCH113          EXEC QBM_PSessionErrorAdd DEFAULT114          IF dbo.QBM_FGISessionErrorIsDeadlock(DEFAULT) = 0 AND dbo.QBM_FGISessionErrorIsMissingCo(DEFAULT) = 0115          BEGIN116            RAISERROR('',117            18,118            1)119              WITH NOWAIT120          END121          ELSE122          BEGIN123            SELECT @AnzahlQBMDBQueuePond = 1124            EXEC QBM_PSessionErrorClean125          END126        END CATCH127      END128      EXEC QBM_PWaitForSeconds 0.040129      IF DATEDIFF(ss,130      @Starttime,131      getutcdate()) > @RunningSecondsMax132      BEGIN133        SELECT @TimeLimitReached = 1134      END135    END136  END TRY137  BEGIN CATCH138    EXEC QBM_PSessionErrorAdd DEFAULT139    IF dbo.QBM_FGISessionErrorIsDeadlock(DEFAULT) = 0 AND dbo.QBM_FGISessionErrorIsMissingCo(DEFAULT) = 0140    BEGIN141      DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()142      RAISERROR(@Rethrow,143      18,144      1)145        WITH NOWAIT146    END147    ELSE148    BEGIN149      EXEC QBM_PSessionErrorClean150    END151  END CATCH152  endLabel:153  EXEC QBM_PSessionContextSet 'GenProcID',154    @GenProcID_R155  EXEC QBM_PSessionContextSet 'XUser',156    @XUser_R157  EXEC QBM_PDBQueueAgentInfoSet @procname,158  1159  SET lock_timeout -1160  RETURN161END
Open raw exported source
SQL ยท Raw25 lines
1   create   procedure QBM_PWorkDBQueueDelete (@PartToDelete int    , @RunningSecondsMax int , @TimeLimitReached int output ) as begin declare @procname2 nvarchar(256) = concat(object_name(@@procid), trim(str(@PartToDelete))) declare @Starttime datetime = getutcdate() select @TimeLimitReached = 0  declare3 @AnzahlDialogDBQueue int = 0 declare @AnzahlQBMDBQueueCurrent int = 0 declare @AnzahlQBMDBQueuePond int = 0  if @PartToDelete = 1 begin select @AnzahlDialogDBQueue4 = 1 end if @PartToDelete = 2 begin select @AnzahlQBMDBQueueCurrent = 1 end if @PartToDelete = 3 begin select @AnzahlQBMDBQueuePond = 1 end if @PartToDelete5 not in (1,2,3) begin goto endlabel end declare @XUser nvarchar(64) = object_name(@@procid) declare @GenProcID_R varchar(38) = dbo.QBM_FGISessionContext6('') declare @XUser_R nvarchar(64) = dbo.QBM_FGISessionContext('XUser') SET XACT_ABORT OFF BEGIN TRY exec QBM_PSessionContextSet 'XUser', @XUser       7  if 0 = (select min(sign(len(ISNULL(p.name, '')))) as StartBisHierGeschafft from ( values ('QBMModuleDef')   , ('QBM_PSessionErrorAdd')   , ('QBM_FGISessionErrorIsDeadlock'8)   , ('QBM_FGISessionErrorIsMissingCo')   , ('QBM_FGIDBQueueActivityDisabled') , ('QBM_PDialogDBQueueDelete') , ('QBM_PQBMDBQueueCurrentDelete')  , ('QBM_PTransactionLevelCheck'9) , ('QBM_PWaitForSeconds') , ('QBMDBQueueCurrent')   , ('QBM_PQBMDBQueuePondDelete') ) as v (ProcedureName) left outer join sys.objects p with (readpast10) on p.name = v.ProcedureName ) begin goto EndLabel end   exec QBM_PDBQueueAgentInfoSet @procname exec QBM_PTransactionLevelCheck 0, @@procid, 'at start'11 set deadlock_priority -10  set lock_timeout 50                      while (@AnzahlQBMDBQueueCurrent + @AnzahlDialogDBQueue + @AnzahlQBMDBQueuePond) > 120 and @TimeLimitReached = 0 and dbo.QBM_FGIDBQueueActivityDisabled() = 0 begin set lock_timeout 50     if @AnzahlQBMDBQueueCurrent > 0 and @PartToDelete13 = 2  begin BEGIN TRY   exec @AnzahlQBMDBQueueCurrent = QBM_PQBMDBQueueCurrentDelete END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default if dbo.QBM_FGISessionErrorIsDeadlock14(default) = 0 and dbo.QBM_FGISessionErrorIsMissingCo(default) = 0   begin RAISERROR ('', 18, 1) WITH NOWAIT end else begin select @AnzahlQBMDBQueueCurrent15 = 1 exec QBM_PSessionErrorClean end END CATCH end      if @AnzahlDialogDBQueue > 0 and @PartToDelete = 1  begin BEGIN TRY exec @AnzahlDialogDBQueue = 16QBM_PDialogDBQueueDelete END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default if dbo.QBM_FGISessionErrorIsDeadlock(default) = 0 and dbo.QBM_FGISessionErrorIsMissingCo17(default) = 0   begin RAISERROR ('', 18, 1) WITH NOWAIT end else begin select @AnzahlDialogDBQueue = 1 exec QBM_PSessionErrorClean end END CATCH end   18   if @AnzahlQBMDBQueuePond > 0 and @PartToDelete = 3  begin BEGIN TRY exec @AnzahlQBMDBQueuePond = QBM_PQBMDBQueuePondDelete END TRY BEGIN CATCH exec 19QBM_PSessionErrorAdd default if dbo.QBM_FGISessionErrorIsDeadlock(default) = 0 and dbo.QBM_FGISessionErrorIsMissingCo(default) = 0   begin RAISERROR (''20, 18, 1) WITH NOWAIT end else begin select @AnzahlQBMDBQueuePond = 1 exec QBM_PSessionErrorClean end END CATCH end   exec QBM_PWaitForSeconds 0.040 if 21DATEDIFF(ss, @Starttime, getutcdate()) > @RunningSecondsMax begin select @TimeLimitReached = 1 end end  END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default22 if dbo.QBM_FGISessionErrorIsDeadlock(default) = 0 and dbo.QBM_FGISessionErrorIsMissingCo(default) = 0 begin declare @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow23() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT end else begin exec QBM_PSessionErrorClean end END CATCH endLabel: exec QBM_PSessionContextSet 'GenProcID', 24@GenProcID_R exec QBM_PSessionContextSet 'XUser', @XUser_R  exec QBM_PDBQueueAgentInfoSet @procname, 1 set lock_timeout -1 return end 25