dbo.QBM_PPrePropCheckExpression
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_FGISessionErrorRethrow source text reference
- references source dbo.QBM_PExecuteSQLWithRetry_LLP source text reference
- references source dbo.QBM_PSessionErrorAdd source text reference
Complete Source
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
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