Back to OIM Explorer

dbo.QBM_PPrePropCheckExpression

Stored ProcedureSQL_STORED_PROCEDURESandbox DB

Stored Procedure.

Source: sandbox-db sys.sql_modules

Source size: 2.592 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_PExecuteSQLWithRetry_LLP source text reference
  • references source dbo.QBM_PSessionErrorAdd source text reference

Complete Source

SQL131 lines
1CREATE PROCEDURE QBM_PPrePropCheckExpression(2  @StrEingabe nvarchar(max),3  @PrePropColElemente nvarchar(max)4)5AS6BEGIN7  DECLARE @result int8  DECLARE @strS nvarchar(max)9  DECLARE @declString nvarchar(max)10  DECLARE @assignString nvarchar(max)11  DECLARE @ergstring nvarchar(max)12  SELECT @declString = N ''13  SELECT @assignString = N ''14  SELECT @ergstring = N ''15  DECLARE @SQLcmd nvarchar(max)16  DECLARE @posi int17  DECLARE @lenIn int18  DECLARE @morph nvarchar(max)19  SELECT @morph = N ''20  DECLARE @istAn nvarchar(16)21  SET XACT_ABORT OFF22  BEGIN TRY23    IF rtrim(isnull(@strEingabe, N '')) = N ''24    BEGIN25      SELECT @result = 126      GOTO ende27    END28    SELECT @posi= 129    SELECT @lenIn= len(rtrim(@StrEingabe))30    WHILE @posi <= @lenIn31    BEGIN32      WHILE substring(@StrEingabe,33      @posi,34      1) = N ' ' AND @posi <= @lenIn35      BEGIN36        SELECT @posi = @posi + 137      END38      IF @posi > @lenIn39      BEGIN40        GOTO endeSyntax41      END42      SELECT @strS = N ''43      IF substring(@StrEingabe,44      @posi,45      1) = ')' OR substring(@StrEingabe,46      @posi,47      1) = N '('48      BEGIN49        SELECT50          @strS = substring(@StrEingabe,51          @posi,52          1)53        SELECT @posi = @posi + 154      END55      ELSE56      BEGIN57        WHILE substring(@StrEingabe,58        @posi,59        1) NOT IN(N ' ',60        N ')',61        N '(') AND @posi <= @lenIn62        BEGIN63          SELECT64            @strS = @strS + substring(@StrEingabe,65            @posi,66            1)67          SELECT @posi = @posi + 168        END69      END70      IF @strs IN(N 'OR',71      N 'AND',72      N 'NOT',73      N '(',74      N ')')75      BEGIN76        SELECT @ergstring = @ergstring + N ' ' + @strs77      END78      ELSE79      BEGIN80        IF charindex(N '|' + @strs + N '#',81        @morph) = 082        BEGIN83          SELECT @morph = @morph + N '|' + @strs + N '#'84        END85        SELECT @ergstring = @ergstring + N ' @' + @strs + N ' = 1 '86      END87    END88    endeSyntax:89    SELECT90      @declString = replace(replace(@morph, N '|', N 'declare @'),91      N '#',92      ' bit' + nchar(13) + nchar(10))93      WHILE len(@morph) > 094    BEGIN95      SELECT96        @strs = substring(@morph,97        2,98        charindex(N '#', @morph) -2)99      SELECT100        @morph = substring(@morph,101        charindex(N '#', @morph) +1,102        8000)103      SELECT @istan = ' = 0 '104      IF charindex(N '|' + @strs + N '|',105      @PrePropColElemente) > 0106      BEGIN107        SELECT @istan = ' = 1 '108      END109      SELECT110        @assignString = @assignString + N 'select @' +@strs + @IstAn + nchar(13) + nchar(10)111    END112    SELECT @SQLcmd = N 'declare @rueckgabe nvarchar(16) '113    SELECT114      @SQLcmd = @SQLcmd + @declString + @assignString + N 'if (' + @ergstring + N ')  select @rueckgabe = 1 '115    EXEC @result = QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLCmd,116      @LockTimeout_ms = DEFAULT,117      @MaxWaitTimeForLock_s = DEFAULT,118      @ProcIDForJournal = @@procid,119      @HandleErrorSilent = 0120  END TRY121  BEGIN CATCH122    EXEC QBM_PSessionErrorAdd DEFAULT123    DECLARE @Rethrow varchar(1000) = dbo.QBM_FGISessionErrorRethrow()124    RAISERROR(@Rethrow,125    18,126    1)127      WITH NOWAIT128  END CATCH129  ende:130  RETURN(@result)131END
Open raw exported source
SQL ยท Raw18 lines
1         create   procedure QBM_PPrePropCheckExpression(@StrEingabe nvarchar(max) ,@PrePropColElemente nvarchar(max)  ) as begin   declare @result2 int declare @strS nvarchar(max) declare @declString nvarchar(max)  declare @assignString nvarchar(max)  declare @ergstring nvarchar(max)  select @declString3 = N'' select @assignString = N'' select @ergstring = N'' declare @SQLcmd nvarchar(max)  declare @posi int declare @lenIn int declare @morph nvarchar(max4)  select @morph = N''  declare @istAn nvarchar(16)  SET XACT_ABORT OFF BEGIN TRY if rtrim(isnull(@strEingabe,N'') ) = N'' begin select @result = 1 goto5 ende  end select @posi= 1 select @lenIn= len(rtrim(@StrEingabe)) while @posi <= @lenIn  begin  While substring(@StrEingabe, @posi, 1) = N' ' And @posi6 <= @lenIn begin select @posi = @posi + 1 end If @posi > @lenIn begin GoTo endeSyntax End select @strS = N''  If substring(@StrEingabe, @posi, 1) = ')'7 Or substring(@StrEingabe, @posi, 1) = N'(' begin select @strS = substring(@StrEingabe, @posi, 1) select @posi = @posi + 1 end Else begin While substring8(@StrEingabe, @posi, 1) not in (N' ' , N')' , N'(' ) And @posi <= @lenIn begin select @strS = @strS + substring(@StrEingabe, @posi, 1) select @posi = @posi9 + 1 end end if @strs in (N'OR', N'AND', N'NOT', N'(', N')') begin select @ergstring = @ergstring + N' ' + @strs end else begin  if charindex(N'|' + @strs10 + N'#', @morph) = 0 begin select @morph = @morph + N'|' + @strs + N'#' end select @ergstring = @ergstring + N' @' + @strs + N' = 1 ' end end  endeSyntax:11  select @declString = replace(replace(@morph, N'|', N'declare @'), N'#', ' bit' + nchar(13) + nchar(10))  while len(@morph ) > 0 begin select @strs = 12substring(@morph, 2, charindex(N'#', @morph)-2)  select @morph = substring(@morph, charindex(N'#', @morph)+1, 8000)  select @istan = ' = 0 ' if charindex13(N'|' + @strs + N'|', @PrePropColElemente) > 0  begin select @istan = ' = 1 ' end select @assignString = @assignString + N'select @'+@strs + @IstAn + nchar14(13) + nchar(10) end  select @SQLcmd = N'declare @rueckgabe nvarchar(16) ' select @SQLcmd = @SQLcmd + @declString + @assignString + N'if (' + @ergstring15 + N')  select @rueckgabe = 1 '    exec @result = QBM_PExecuteSQLWithRetry_LLP @SQLStatement = @SQLCmd , @LockTimeout_ms = default , @MaxWaitTimeForLock_s16 = default , @ProcIDForJournal = @@procid , @HandleErrorSilent = 0   END TRY BEGIN CATCH exec QBM_PSessionErrorAdd default declare @Rethrow varchar(100017) = dbo.QBM_FGISessionErrorRethrow() RAISERROR (@Rethrow, 18, 1) WITH NOWAIT END CATCH ende:  return (@result) end 18