Back to OIM Explorer

dbo.QBM_FSQRemoveComment_i

Scalar FunctionSQL_SCALAR_FUNCTIONSandbox DB

Scalar Function.

Source: sandbox-db sys.sql_modules

Source size: 4.451 characters

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

SQL290 lines
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
SQL ยท Raw30 lines
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