dbo.QBM_FCVBinarySetBit
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
- No typed edges extracted for this source.
Complete Source
1CREATE FUNCTION dbo.QBM_FCVBinarySetBit(2 @InVector varbinary(200),3 @PositionToSet int4) RETURNS varbinary(2005)6 WITH SCHEMABINDING7AS8BEGIN9 DECLARE @InVector_intern varbinary(200)10 DECLARE @Erg varbinary(200)11 DECLARE @ByteGruppenpotenz int12 DECLARE @BitmusterGruppenpotenz int13 DECLARE @einByte varbinary(1)14 DECLARE @len int15 SELECT @ByteGruppenpotenz =(@PositionToSet / 8) +116 SELECT17 @BitmusterGruppenpotenz = power(2,18 @PositionToSet % 8)19 IF @InVector IS NOT NULL20 BEGIN21 SELECT @len = datalength(@InVector)22 IF @len < @ByteGruppenpotenz23 BEGIN24 SELECT25 @InVector_intern = convert(varbinary(200),26 replicate(convert(varbinary(1), 0x00), @ByteGruppenpotenz -@len)) + @InVector27 END28 ELSE29 BEGIN30 SELECT @InVector_intern = @InVector31 END32 SELECT @len = datalength(@InVector_intern)33 SELECT34 @einByte = convert(varbinary(1),35 convert(int, substring(@InVector_intern,(@len+1-@ByteGruppenpotenz), 1)) | @BitmusterGruppenpotenz)36 SELECT @erg = CASE37 WHEN @ByteGruppenpotenz = 1 AND @len = 1 THEN38 @einByte39 WHEN @ByteGruppenpotenz = 1 AND @len > 1 THEN40 substring(@InVector_intern,41 1,42 @len - 1) + @einByte43 WHEN @ByteGruppenpotenz = @len AND @len > 1 THEN44 @einByte + substring(@InVector_intern,45 2,46 @len-1)47 ELSE substring(@InVector_intern,48 1,49 @len - @ByteGruppenpotenz) + @einByte + substring(@InVector_intern,50 (@len+2 - @ByteGruppenpotenz),51 @ByteGruppenpotenz -1)52 END53 END54 ende:55 RETURN(@erg)56END
Open raw exported source
1 create function dbo.QBM_FCVBinarySetBit (@InVector varbinary(200), @PositionToSet int ) returns varbinary(200) with SCHEMABINDING as begin2 declare @InVector_intern varbinary(200) declare @Erg varbinary(200) declare @ByteGruppenpotenz int declare @BitmusterGruppenpotenz int declare @einByte3 varbinary(1) declare @len int select @ByteGruppenpotenz = (@PositionToSet / 8) +1 select @BitmusterGruppenpotenz = power(2, @PositionToSet % 8) if @InVector4 is not null begin select @len = datalength(@InVector) if @len < @ByteGruppenpotenz begin select @InVector_intern = convert(varbinary(200), replicate5(convert(varbinary(1), 0x00), @ByteGruppenpotenz -@len)) + @InVector end else begin select @InVector_intern = @InVector end select @len = datalength(@InVector_intern6) select @einByte = convert(varbinary(1), convert(int, substring(@InVector_intern, (@len+1-@ByteGruppenpotenz), 1)) | @BitmusterGruppenpotenz ) select7 @erg = case when @ByteGruppenpotenz = 1 and @len = 1 then @einByte when @ByteGruppenpotenz = 1 and @len > 1 then substring(@InVector_intern, 1, @len -8 1) + @einByte when @ByteGruppenpotenz = @len and @len > 1 then @einByte + substring(@InVector_intern, 2, @len-1) else substring(@InVector_intern, 1,9 @len - @ByteGruppenpotenz) + @einByte + substring(@InVector_intern, (@len+2 - @ByteGruppenpotenz), @ByteGruppenpotenz -1) end end ende: return (@erg)10 end 11