Back to OIM Explorer

dbo.QBM_PSessionErrorAdd

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure.

Source: sandbox-db sys.sql_modules

Source size: 4.762 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_FGISessionErrorRethrow source text reference
  • references source dbo.QBM_PSessionErrorSave source text reference
  • references source dbo.QBM_FTSessionErrorLoad source text reference

References

Referenced By

Complete Source

SQL237 lines
1CREATE PROCEDURE QBM_PSessionErrorAdd(2  @SessionErrorNew QBM_YSessionError READONLY,3  @SQLCmd nvarchar(max) = NULL4)5AS6BEGIN7  DECLARE @SessionError_intern QBM_YSessionError8  DECLARE @ExistingErrors QBM_YSessionError9  DECLARE @CountExistingEntries int10  DECLARE @BinImCatchBlock BIT = 011  DECLARE @BinImTrigger BIT = 012  SET nocount13    ON14  SET XACT_ABORT OFF15  IF ERROR_PROCEDURE() > ' '16  BEGIN17    SELECT @BinImCatchBlock = 118  END19  IF EXISTS(20    SELECT TOP 1 121    FROM sys.triggers t22    WHERE23      t.name = ERROR_PROCEDURE())24  BEGIN25    SELECT @BinImTrigger = 126  END27  IF EXISTS(28    SELECT TOP 1 129    FROM @SessionErrorNew e)30  BEGIN31    INSERT INTO @SessionError_intern(ErrorMessage,32    ErrorSeverity,33    ErrorState,34    ErrorNumber,35    ProcedureName,36    ProcedureLine,37    MessageDate,38    GenProcID,39    RepeatCounter,40    IsReThrow,41    SourceCode)42    SELECT43      ErrorMessage,44      ErrorSeverity,45      ErrorState,46      ErrorNumber,47      ProcedureName,48      ProcedureLine,49      MessageDate,50      GenProcID,51      RepeatCounter,52      IsReThrow,53      SourceCode54    FROM @SessionErrorNew55    ORDER BY ElementIndex56  END57  ELSE58  BEGIN59    INSERT INTO @SessionError_intern(ErrorMessage,60    ErrorSeverity,61    ErrorState,62    ErrorNumber,63    ProcedureName,64    ProcedureLine,65    MessageDate,66    GenProcID,67    RepeatCounter,68    IsReThrow,69    SourceCode)70    SELECT71      ERROR_MESSAGE() AS ErrorMessage,72      ERROR_SEVERITY() AS ErrorSeverity,73      ERROR_STATE() AS ErrorState,74      ERROR_NUMBER() AS ErrorNumber,75      ERROR_PROCEDURE() AS ProcedureName,76      ERROR_LINE() AS ProcedureLine,77      GETUTCDATE(),78      NULL AS GenProcID,79      0 AS RepeatCounter,80    CASE81      WHEN ERROR_NUMBER() = 50000 AND isnull(ERROR_MESSAGE(),82    '') IN('',83    'rethrow',84    dbo.QBM_FGISessionErrorRethrow()) OR ERROR_NUMBER() = 50001 THEN85    186    ELSE 087    END AS IsReThrow,88    @SQLCmd AS SourceCode89  END90  UPDATE @SessionError_intern91  SET ErrorMessage = '<no message>'92  FROM @SessionError_intern i93  WHERE94    ISNULL(i.ErrorMessage,95  '') = '' AND i.ErrorNumber NOT IN(50000,96  50001)97  UPDATE @SessionError_intern98  SET ProcedureLine = 099  WHERE100    ISNULL(ProcedureLine,101  0) = 0102  UPDATE @SessionError_intern103  SET ProcedureName = '<no procedure>'104  WHERE105    ISNULL(ProcedureName,106  '') = ''107  INSERT INTO @ExistingErrors(ErrorMessage,108  ErrorSeverity,109  ErrorState,110  ErrorNumber,111  ProcedureName,112  ProcedureLine,113  MessageDate,114  GenProcID,115  RepeatCounter,116  IsReThrow,117  SourceCode)118  SELECT119    ErrorMessage,120    ErrorSeverity,121    ErrorState,122    ErrorNumber,123    ProcedureName,124    ProcedureLine,125    MessageDate,126    GenProcID,127    RepeatCounter,128    IsReThrow,129    SourceCode130  FROM dbo.QBM_FTSessionErrorLoad() l131  ORDER BY l.RecordNumber132  SELECT @CountExistingEntries = @@ROWCOUNT133  IF EXISTS(134    SELECT TOP 1 1135    FROM @ExistingErrors e136    JOIN @SessionError_intern n137      ON e.ElementIndex = @CountExistingEntries138    WHERE139      e.ErrorNumber = n.ErrorNumber AND e.ErrorMessage = n.ErrorMessage AND e.ProcedureName = n.ProcedureName AND e.ProcedureLine = n.ProcedureLine140  )141  BEGIN142    UPDATE @ExistingErrors143    SET RepeatCounter += 1144    FROM @ExistingErrors e145    WHERE146      e.ElementIndex = @CountExistingEntries147  END148  ELSE149  BEGIN150    IF EXISTS(151      SELECT TOP 1 1152      FROM @SessionError_intern i153      WHERE154        i.IsReThrow = 1 OR(i.ErrorNumber IN(50000, 50001) AND isnull(i.ErrorMessage, '') IN('', dbo.QBM_FGISessionErrorRethrow())) OR i.ErrorMessage155    = 'rethrow')156    BEGIN157      UPDATE @SessionError_intern158      SET ErrorSeverity = CASE159      WHEN isnull(e.ErrorSeverity,160      18) < i.ErrorSeverity THEN161      i.ErrorSeverity162      ELSE isnull(e.ErrorSeverity,163      18)164      END,165      ErrorState = CASE166      WHEN isnull(e.ErrorState,167      1) < i.ErrorState THEN168      i.ErrorState169      ELSE isnull(e.ErrorState,170      1)171      END,172      ErrorMessage = 'rethrow',173      ErrorNumber = 50000,174      IsReThrow = 1175      FROM @SessionError_intern i176      LEFT177      OUTER178      JOIN @ExistingErrors e179        ON e.ElementIndex = @CountExistingEntries180      WHERE181        i.IsReThrow = 1 OR(i.ErrorNumber IN(50000, 50001) AND isnull(i.ErrorMessage, '') IN('', dbo.QBM_FGISessionErrorRethrow())) OR i.ErrorMessage182      = 'rethrow'183    END184    INSERT INTO @ExistingErrors(ErrorMessage,185    ErrorSeverity,186    ErrorState,187    ErrorNumber,188    ProcedureName,189    ProcedureLine,190    MessageDate,191    GenProcID,192    RepeatCounter,193    IsReThrow,194    SourceCode)195    SELECT196      ErrorMessage,197      ErrorSeverity,198      ErrorState,199      ErrorNumber,200      ProcedureName,201      ProcedureLine,202      MessageDate,203      GenProcID,204      RepeatCounter,205      IsReThrow,206      SourceCode207    FROM @SessionError_intern208    ORDER BY ElementIndex209  END210  IF @BinImCatchBlock = 1 AND @BinImTrigger = 1 AND XACT_STATE() = -1211  BEGIN212    INSERT INTO @SessionError_intern(ErrorMessage,213    ErrorSeverity,214    ErrorState,215    ErrorNumber,216    ProcedureName,217    ProcedureLine,218    MessageDate,219    GenProcID,220    RepeatCounter,221    IsReThrow,222    SourceCode)223    SELECT224      'Uncommitable transaction detected in Trigger, will rollback' AS ErrorMessage,225      ERROR_SEVERITY() AS ErrorSeverity,226      ERROR_STATE() AS ErrorState,227      50002 AS ErrorNumber,228      ERROR_PROCEDURE() AS ProcedureName,229      ERROR_LINE() AS ProcedureLine,230      GETUTCDATE(),231      NULL AS GenProcID,232      0 AS RepeatCounter,233      0 AS IsReThrow,234      NULL AS SourceCode235  END236  EXEC QBM_PSessionErrorSave @ExistingErrors237END
Open raw exported source
SQL ยท Raw32 lines
1  create   procedure QBM_PSessionErrorAdd (@SessionErrorNew QBM_YSessionError readonly  , @SQLCmd nvarchar(max) = null   ) as begin declare @SessionError_intern2 QBM_YSessionError declare @ExistingErrors QBM_YSessionError declare @CountExistingEntries int declare @BinImCatchBlock bit = 0 declare @BinImTrigger bit3 = 0 set nocount on SET XACT_ABORT OFF if ERROR_PROCEDURE() > ' ' begin select @BinImCatchBlock = 1 end if exists (select top 1 1 from sys.triggers t where4 t.name = ERROR_PROCEDURE() ) begin select @BinImTrigger = 1 end if exists (select top 1 1 from @SessionErrorNew e ) begin insert into @SessionError_intern5 (ErrorMessage, ErrorSeverity, ErrorState, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode) select6 ErrorMessage, ErrorSeverity, ErrorState, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode from7 @SessionErrorNew order by ElementIndex end else begin insert into @SessionError_intern(ErrorMessage, ErrorSeverity, ErrorState, ErrorNumber , ProcedureName8, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode) select ERROR_MESSAGE() as ErrorMessage , ERROR_SEVERITY() as ErrorSeverity9 , ERROR_STATE()  as ErrorState , ERROR_NUMBER() as ErrorNumber , ERROR_PROCEDURE() as ProcedureName, ERROR_LINE() as ProcedureLine, GETUTCDATE() , null10 as GenProcID, 0 as RepeatCounter , case when ERROR_NUMBER() = 50000 and isnull(ERROR_MESSAGE(), '') in ('', 'rethrow', dbo.QBM_FGISessionErrorRethrow(11)) or ERROR_NUMBER() = 50001 then 1 else 0 end as IsReThrow , @SQLCmd as SourceCode  end  update @SessionError_intern set ErrorMessage = '<no message>'12 from @SessionError_intern i where ISNULL(i.ErrorMessage, '') = '' and i.ErrorNumber not in ( 50000, 50001) update @SessionError_intern set ProcedureLine13 = 0 where ISNULL(ProcedureLine, 0) = 0 update @SessionError_intern set ProcedureName = '<no procedure>' where ISNULL(ProcedureName, '') = ''  insert into14 @ExistingErrors(ErrorMessage, ErrorSeverity, ErrorState, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow15, SourceCode) select ErrorMessage, ErrorSeverity, ErrorState, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow16, SourceCode from dbo.QBM_FTSessionErrorLoad() l  order by l.RecordNumber select @CountExistingEntries = @@ROWCOUNT  if exists (select top 1 1 from @ExistingErrors17 e join @SessionError_intern n on e.ElementIndex = @CountExistingEntries  where e.ErrorNumber = n.ErrorNumber and e.ErrorMessage = n.ErrorMessage and e.ProcedureName18 = n.ProcedureName and e.ProcedureLine = n.ProcedureLine  ) begin update @ExistingErrors set RepeatCounter += 1 from @ExistingErrors e where e.ElementIndex19 = @CountExistingEntries end else begin  if exists (select top 1 1 from @SessionError_intern i where i.IsReThrow = 1 or (i.ErrorNumber in( 50000, 5000120) and isnull(i.ErrorMessage, '') in( '', dbo.QBM_FGISessionErrorRethrow()) ) or i.ErrorMessage = 'rethrow' ) begin update @SessionError_intern set ErrorSeverity21 = case when isnull(e.ErrorSeverity, 18) < i.ErrorSeverity then i.ErrorSeverity else isnull(e.ErrorSeverity, 18) end , ErrorState = case when isnull(e.ErrorState22, 1) < i.ErrorState then i.ErrorState else isnull(e.ErrorState, 1) end  , ErrorMessage = 'rethrow' , ErrorNumber = 50000 , IsReThrow = 1  from @SessionError_intern23 i left outer join @ExistingErrors e on e.ElementIndex = @CountExistingEntries  where i.IsReThrow = 1 or (i.ErrorNumber in ( 50000, 50001) and isnull(i.ErrorMessage24, '') in( '', dbo.QBM_FGISessionErrorRethrow()) ) or i.ErrorMessage = 'rethrow' end insert into @ExistingErrors(ErrorMessage, ErrorSeverity, ErrorState25, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode) select ErrorMessage, ErrorSeverity, ErrorState26, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode from @SessionError_intern order by ElementIndex27 end   if @BinImCatchBlock = 1 and @BinImTrigger = 1 and XACT_STATE() = -1 begin insert into @SessionError_intern(ErrorMessage, ErrorSeverity, ErrorState28, ErrorNumber , ProcedureName, ProcedureLine, MessageDate , GenProcID, RepeatCounter, IsReThrow, SourceCode) select 'Uncommitable transaction detected in Trigger, will rollback'29 as ErrorMessage , ERROR_SEVERITY() as ErrorSeverity , ERROR_STATE()  as ErrorState , 50002 as ErrorNumber , ERROR_PROCEDURE() as ProcedureName, ERROR_LINE30() as ProcedureLine, GETUTCDATE() , null as GenProcID, 0 as RepeatCounter , 0 as IsReThrow , null as SourceCode end  exec QBM_PSessionErrorSave @ExistingErrors31 end 32