• Hi

    Not sure if this will help, but the following example packs a couple of varbinarys with 4 integers in both endians (assuming 4 bytes per integer). Then unpacks them. You shouldn't need to nibble through the binary byte by byte.

    declare @i1 int = 1234

    declare @i2 int = 5678

    declare @i3 int = 9101

    declare @i4 int = 1121

    declare @vb1 varbinary(16)

    declare @vb2 varbinary(16)

    set @vb1 = CAST(@i1 as varbinary(16))

    set @vb1 = @vb1 + CAST(@i2 as varbinary(16))

    set @vb1 = @vb1 + CAST(@i3 as varbinary(16))

    set @vb1 = @vb1 + CAST(@i4 as varbinary(16))

    set @vb2 = CAST(REVERSE(CAST(@i1 as varbinary(16))) as varbinary(16))

    set @vb2 = @vb2 + CAST(REVERSE(CAST(@i2 as varbinary(16))) as varbinary(16))

    set @vb2 = @vb2 + CAST(REVERSE(CAST(@i3 as varbinary(16))) as varbinary(16))

    set @vb2 = @vb2 + CAST(REVERSE(CAST(@i4 as varbinary(16))) as varbinary(16))

    SELECT @vb1

    SELECT @vb2

    SELECT cast(substring(@vb1,1,4) as int)

    , cast(substring(@vb1,5,4) as int)

    , cast(substring(@vb1,9,4) as int)

    , cast(substring(@vb1,13,4) as int)

    SELECT cast(cast(reverse(substring(@vb2,1,4)) as varbinary(4)) as int)

    , cast(cast(reverse(substring(@vb2,5,4)) as varbinary(4)) as int)

    , cast(cast(reverse(substring(@vb2,9,4)) as varbinary(4)) as int)

    , cast(cast(reverse(substring(@vb2,13,4)) as varbinary(4)) as int)

    So applying that to your insert and reversing it as in your example, would give us the following

    insert tbl_LotData(lotnumber, StartDTS, EndDTS,LotQuantity

    ,block0

    ,block1

    ...

    )

    values (@lotnumber, @startDTS,@endDTS,@LotQuantity,

    cast(cast(reverse(substring(@block,1,4)) as varbinary(4)) as int)

    , cast(cast(reverse(substring(@block,5,4)) as varbinary(4)) as int)

    ...

    )