dbo.QBM_FSQRemoveComment_i
Scalar FunctionSQL_SCALAR_FUNCTIONSandbox DB
Interpretation
- Database function. Usually supports views, validation, or calculated predicates; look at referenced-by entries for callers.
Relations
- No extracted relations.
Typed Edges
- references source dbo.QBM_FSQRemoveComment source text reference
Complete Source
1CREATE FUNCTION dbo.QBM_FSQRemoveComment_i(2 @SQLTxt nvarchar(max),3 @WithDeformat BIT4) RETURNS nvarchar(max5)6 WITH SCHEMABINDING7AS8BEGIN9 DECLARE @erg nvarchar(max)10 DECLARE @ergGesamt nvarchar(max) = ''11 DECLARE @LineLen int = 012 DECLARE @i int13 DECLARE @len int14 DECLARE @Zustand int15 DECLARE @Nesting int16 DECLARE @NextChar nvarchar(1)17 DECLARE @Next2Char nvarchar(2)18 DECLARE @crlf nvarchar(2) = CONCAT(nchar(13),19 nchar(10))20 SELECT @erg = N ''21 DECLARE @TargetBuffer dbo.QBM_YCursorBuffer22 DECLARE @SourceBuffer dbo.QBM_YCursorBuffer23 DECLARE @CountInputLines int24 DECLARE @IndexInputLines int25 DECLARE @SqlIn nvarchar(max)26 SELECT @Zustand = 027 INSERT INTO @SourceBuffer(ContentFull)28 SELECT s.value29 FROM string_split(@SQLTxt,30 nchar(10)) AS s31 SELECT @CountInputLines = @@ROWCOUNT32 SELECT @IndexInputLines = 133 WHILE @IndexInputLines <= @CountInputLines34 BEGIN35 IF @IndexInputLines = @CountInputLines36 BEGIN37 SELECT TOP 1 @SqlIn = bu.ContentFull + nchar(1)38 FROM @SourceBuffer bu39 WHERE40 bu.ElementIndex = @IndexInputLines41 END42 ELSE43 BEGIN44 SELECT TOP 1 @SqlIn = bu.ContentFull + char(10) + nchar(1)45 FROM @SourceBuffer bu46 WHERE47 bu.ElementIndex = @IndexInputLines48 END49 SELECT50 @i = 1,51 @len = len(@sqlIn) -152 WHILE @i <= @len53 BEGIN54 SELECT55 @Next2Char = substring(@SQLIn,56 @i,57 2),58 @NextChar =59 LEFT(@Next2Char,60 1)61 IF @zustand = 562 BEGIN63 IF @next2Char IN(N '--',64 '/*',65 'N''') OR @nextchar IN(N '''',66 nchar(10),67 nchar(13),68 N ' ',69 nchar(9),70 ',',71 '(',72 ')')73 BEGIN74 SELECT @Zustand = 0 CONTINUE75 END76 SELECT77 @i += 1,78 @erg = @erg + @nextchar,79 @LineLen += 1 CONTINUE80 END81 IF @Zustand = 382 BEGIN83 IF @Next2Char = N ''''''84 BEGIN85 SELECT86 @erg = @erg + @next2char,87 @LineLen += 2,88 @i += 2 CONTINUE89 END90 IF @nextchar = N ''''91 BEGIN92 SELECT93 @Zustand = 0,94 @i += 1,95 @erg = @erg + @nextchar,96 @LineLen += 1 CONTINUE97 END98 SELECT99 @i += 1,100 @erg = @erg + @nextchar,101 @LineLen += 1 CONTINUE102 END103 IF @Zustand = 1104 BEGIN105 IF @nextchar IN(nchar(13),106 nchar(10))107 BEGIN108 IF @WithDeformat = 1109 BEGIN110 SELECT @Zustand = 4111 END112 ELSE113 BEGIN114 SELECT @Zustand = 0115 END116 CONTINUE117 END118 SELECT @i += 1 CONTINUE119 END120 IF @Zustand = 2121 BEGIN122 IF @next2char = N '/*'123 BEGIN124 SELECT125 @Nesting += 1,126 @i += 2 CONTINUE127 END128 IF @next2char = N '*/'129 BEGIN130 SELECT @Nesting -= 1131 IF @nesting = 0132 BEGIN133 SELECT @Zustand = 0134 END135 SELECT @i += 2 CONTINUE136 END137 SELECT @i += 1 CONTINUE138 END139 IF @Zustand = 4140 BEGIN141 IF @nextchar IN(N ' ',142 nchar(9),143 nchar(13),144 nchar(10))145 BEGIN146 SELECT @i += 1147 IF @WithDeformat = 0148 BEGIN149 SELECT150 @erg = @erg + @nextchar,151 @LineLen += 1152 END153 CONTINUE154 END155 SELECT @zustand = 0 CONTINUE156 END157 IF @Zustand = 0158 BEGIN159 IF @LineLen > 150160 BEGIN161 IF @WithDeformat = 1162 BEGIN163 SELECT @erg = @erg + @crlf164 END165 SELECT @LineLen = 0166 INSERT INTO @TargetBuffer(ContentFull)167 SELECT @erg168 SELECT169 @erg = '',170 @zustand = 4 CONTINUE171 END172 IF @Next2Char = N '--'173 BEGIN174 SELECT175 @Zustand = 1,176 @i += 2 CONTINUE177 END178 IF @Next2Char = N '/*'179 BEGIN180 SELECT181 @Zustand = 2,182 @Nesting = 1,183 @i += 2 CONTINUE184 END185 IF @NextChar = N ''''186 BEGIN187 SELECT188 @Zustand = 3,189 @erg = @erg + @NextChar,190 @LineLen += 1,191 @i += 1 CONTINUE192 END193 IF @Next2Char = N 'N'''194 BEGIN195 SELECT196 @Zustand = 3,197 @erg = @erg + @Next2Char,198 @LineLen += 2,199 @i += 2 CONTINUE200 END201 IF @NextChar IN(N ' ',202 nchar(9))203 BEGIN204 SELECT205 @Zustand = 4,206 @erg = @erg + ' ',207 @LineLen += 1,208 @i += 1 CONTINUE209 END210 IF @NextChar IN(N '[')211 BEGIN212 SELECT213 @Zustand = 6,214 @erg = @erg + @NextChar,215 @LineLen += 1,216 @i += 1 CONTINUE217 END218 IF @Next2Char = @crlf219 BEGIN220 IF @WithDeformat = 1221 BEGIN222 SELECT223 @erg = @erg + ' ',224 @LineLen += 1,225 @Zustand = 4226 END227 ELSE228 BEGIN229 SELECT230 @erg = @erg + @crlf,231 @LineLen = 0232 INSERT INTO @TargetBuffer(ContentFull)233 SELECT @erg234 SELECT @erg = ''235 END236 SELECT @i += 2 CONTINUE237 END238 IF @NextChar IN(nchar(13),239 nchar(10))240 BEGIN241 IF @WithDeformat = 1242 BEGIN243 SELECT244 @erg = @erg + ' ',245 @LineLen += 1,246 @Zustand = 4247 END248 ELSE249 BEGIN250 SELECT251 @erg = @erg + @crlf,252 @LineLen = 0253 END254 SELECT @i += 1 CONTINUE255 END256 SELECT257 @Zustand = 5,258 @i += 1,259 @erg = @erg + @NextChar,260 @LineLen += 1 CONTINUE261 END262 IF @Zustand = 6263 BEGIN264 IF @nextchar = N ']'265 BEGIN266 SELECT267 @Zustand = 0,268 @i += 1,269 @erg = @erg + @nextchar,270 @LineLen += 1 CONTINUE271 END272 SELECT273 @i += 1,274 @erg = @erg + @nextchar,275 @LineLen += 1 CONTINUE276 END277 zyklusende:278 END279 SELECT @IndexInputLines += 1280 END281 INSERT INTO @TargetBuffer(ContentFull)282 SELECT @erg283 SELECT284 @ergGesamt = string_agg(bu.ContentFull,285 N '') WITHIN286 GROUP(287 ORDER BY bu.ElementIndex)288 FROM @TargetBuffer bu ende:289 RETURN(@erggesamt)290END
Open raw exported source
1 create function dbo.QBM_FSQRemoveComment_i (@SQLTxt nvarchar(max) , @WithDeformat bit ) returns nvarchar(max) with SCHEMABINDING as begin2 declare @erg nvarchar(max) declare @ergGesamt nvarchar(max) = '' declare @LineLen int = 0 declare @i int declare @len int declare @Zustand int declare3 @Nesting int declare @NextChar nvarchar(1) declare @Next2Char nvarchar(2) declare @crlf nvarchar(2) = concat(nchar(13) , nchar(10)) select @erg = N''4 declare @TargetBuffer dbo.QBM_YCursorBuffer declare @SourceBuffer dbo.QBM_YCursorBuffer declare @CountInputLines int declare @IndexInputLines int declare5 @SqlIn nvarchar(max) select @Zustand = 0 insert into @SourceBuffer (ContentFull) select s.value from string_split(@SQLTxt, nchar(10)) as s select @CountInputLines6 = @@ROWCOUNT select @IndexInputLines = 1 while @IndexInputLines <= @CountInputLines begin if @IndexInputLines = @CountInputLines begin select top 1 7@SqlIn = bu.ContentFull + nchar(1) from @SourceBuffer bu where bu.ElementIndex = @IndexInputLines end else begin select top 1 @SqlIn = bu.ContentFull +8 char(10) + nchar(1) from @SourceBuffer bu where bu.ElementIndex = @IndexInputLines end select @i = 1 ,@len = len(@sqlIn) -1 while @i <= @len begin select9 @Next2Char = substring(@SQLIn, @i, 2) ,@NextChar = LEFT(@Next2Char,1) if @zustand = 5 begin if @next2Char in (N'--', '/*', 'N''') or @nextchar in 10(N'''', nchar(10), nchar(13), N' ', nchar(9), ',', '(', ')') begin select @Zustand = 0 continue end select @i += 1 ,@erg = @erg + @nextchar ,@LineLen11 += 1 continue end if @Zustand = 3 begin if @Next2Char = N'''''' begin select @erg = @erg + @next2char ,@LineLen += 2 ,@i += 2 continue end if @nextchar12 = N'''' begin select @Zustand = 0 ,@i += 1 ,@erg = @erg + @nextchar ,@LineLen += 1 continue end select @i += 1 ,@erg = @erg + @nextchar ,@LineLen +=13 1 continue end if @Zustand = 1 begin if @nextchar in ( nchar(13), nchar(10)) begin if @WithDeformat = 1 begin select @Zustand = 4 end else begin 14select @Zustand = 0 end continue end select @i += 1 continue end if @Zustand = 2 begin if @next2char = N'/*' begin select @Nesting += 1 ,@i += 2 continue15 end if @next2char = N'*/' begin select @Nesting -= 1 if @nesting = 0 begin select @Zustand = 0 end select @i += 2 continue end select @i += 1 continue16 end if @Zustand = 4 begin if @nextchar in (N' ', nchar(9), nchar(13), nchar(10) ) begin select @i += 1 if @WithDeformat = 0 begin select @erg 17= @erg + @nextchar ,@LineLen += 1 end continue end select @zustand = 0 continue end if @Zustand = 0 begin if @LineLen > 150 begin if @WithDeformat18 = 1 begin select @erg = @erg + @crlf end select @LineLen = 0 insert into @TargetBuffer(ContentFull) select @erg select @erg = '' ,@zustand = 4 continue19 end if @Next2Char = N'--' begin select @Zustand = 1 ,@i += 2 continue end if @Next2Char = N'/*' begin select @Zustand = 2 ,@Nesting = 1 ,@i += 2 continue20 end if @NextChar = N'''' begin select @Zustand = 3 ,@erg = @erg + @NextChar ,@LineLen += 1 ,@i += 1 continue end if @Next2Char = N'N''' begin select21 @Zustand = 3 ,@erg = @erg + @Next2Char ,@LineLen += 2 ,@i += 2 continue end if @NextChar in (N' ', nchar(9)) begin select @Zustand = 4 ,@erg = @erg +22 ' ' ,@LineLen += 1 ,@i += 1 continue end if @NextChar in (N'[') begin select @Zustand = 6 ,@erg = @erg + @NextChar ,@LineLen += 1 ,@i += 1 continue 23 end if @Next2Char = @crlf begin if @WithDeformat = 1 begin select @erg = @erg + ' ' ,@LineLen += 1 ,@Zustand = 4 end else begin select @erg = @erg24 + @crlf ,@LineLen = 0 insert into @TargetBuffer(ContentFull) select @erg select @erg = '' end select @i += 2 continue end if @NextChar in (nchar(13),25 nchar(10)) begin if @WithDeformat = 1 begin select @erg = @erg + ' ' ,@LineLen += 1 ,@Zustand = 4 end else begin select @erg = @erg + @crlf ,@LineLen26 = 0 end select @i += 1 continue end select @Zustand = 5 ,@i += 1 ,@erg = @erg + @NextChar ,@LineLen += 1 continue end if @Zustand = 6 begin if @nextchar27 = N']' begin select @Zustand = 0 ,@i += 1 ,@erg = @erg + @nextchar ,@LineLen += 1 continue end select @i += 1 ,@erg = @erg + @nextchar ,@LineLen += 281 continue end zyklusende: end select @IndexInputLines += 1 end insert into @TargetBuffer(ContentFull) select @erg select @ergGesamt = string_agg29( bu.ContentFull, N'' ) WITHIN GROUP ( ORDER BY bu.ElementIndex ) from @TargetBuffer bu ende: return(@erggesamt) end 30