I work on sql server 2012 i call procedure name as below
EXEC Recover_Truncated_Data_Proc 'Nahdy','dbo.Student'
I get error
Msg 537, Level 16, State 3, Procedure Recover_Truncated_Data_Proc, Line 113 Invalid length parameter passed to the LEFT or SUBSTRING function.
so How to solve this issue please
this table dbo.Student
     - USE [Nahdy]  
-  GO  
-       
-  /****** Object:  Table [dbo].[Student]    Script Date: 4/8/2021 11:02:03 PM ******/  
-  SET ANSI_NULLS ON  
-  GO  
-       
-  SET QUOTED_IDENTIFIER ON  
-  GO  
-       
-  SET ANSI_PADDING ON  
-  GO  
-       
-  CREATE TABLE [dbo].[Student](  
-      [Sno] [int] NOT NULL,  
-      [Student ID] [nvarchar](6) NOT NULL,  
-      [Student name] [varchar](50) NOT NULL,  
-      [Date of Birth] [datetime] NOT NULL,  
-      [Weight] [int] NULL  
-  ) ON [Data Filegroup 1]  
-       
-  GO  
-       
-  SET ANSI_PADDING OFF  
-  GO  
-   
- procedure as below  
-   
-  alter PROCEDURE Recover_Truncated_Data_Proc  
-  @Database_Name NVARCHAR(MAX),  
-  @SchemaName_n_TableName NVARCHAR(MAX),  
-  @Date_From datetime='1900/01/01',  
-  @Date_To datetime ='9999/12/31'  
-  AS  
-  DECLARE @Fileid INT  
-  DECLARE @Pageid INT  
-  DECLARE @Slotid INT  
-        
-  DECLARE @ConsolidatedPageID VARCHAR(MAX)  
-  Declare @AllocUnitID as bigint  
-  Declare @TransactionID as VARCHAR(MAX)  
-        
-  /*  Pick The actual data  
-  */  
-  declare @temppagedata table  
-  (  
-  [ParentObject] sysname,  
-  [Object] sysname,  
-  [Field] sysname,  
-  [Value] sysname)  
-        
-  declare @pagedata table  
-  (  
-  [Page ID] sysname,  
-  [AllocUnitId] bigint,  
-  [ParentObject] sysname,  
-  [Object] sysname,  
-  [Field] sysname,  
-  [Value] sysname)  
-        
-        
-      DECLARE Page_Data_Cursor CURSOR FOR  
-      /*We need to filter LOP_MODIFY_ROW,LOP_MODIFY_COLUMNS from log for modified records & Get its Slot No, Page ID & AllocUnit ID*/  
-      SELECT LTRIM(RTRIM(Replace([Description],'Deallocated',''))) AS [PAGE ID]  
-      ,[Slot ID],[AllocUnitId]  
-      FROM    sys.fn_dblog(NULL, NULL)    
-      WHERE     
-      AllocUnitId IN  
-      (Select [Allocation_unit_id] from sys.allocation_units allocunits  
-      INNER JOIN sys.partitions partitions ON (allocunits.type IN (1, 3)    
-      AND partitions.hobt_id = allocunits.container_id) OR (allocunits.type = 2   
-      AND partitions.partition_id = allocunits.container_id)    
-      Where object_id=object_ID('' + @SchemaName_n_TableName + ''))  
-      AND Operation IN ('LOP_MODIFY_ROW') AND [Context] IN ('LCX_PFS')   
-      AND Description Like '%Deallocated%'  
-      /*Use this subquery to filter the date*/  
-        
-      AND [TRANSACTION ID] IN (SELECT DISTINCT [TRANSACTION ID] FROM    sys.fn_dblog(NULL, NULL)   
-      WHERE Context IN ('LCX_NULL') AND Operation in ('LOP_BEGIN_XACT')    
-      AND [Transaction Name]='TRUNCATE TABLE'  
-      AND  CONVERT(NVARCHAR(11),[Begin Time]) BETWEEN @Date_From AND @Date_To)  
-        
-      /****************************************/  
-        
-      GROUP BY [Description],[Slot ID],[AllocUnitId]  
-      ORDER BY [Slot ID]      
-            
-      OPEN Page_Data_Cursor  
-        
-      FETCH NEXT FROM Page_Data_Cursor INTO @ConsolidatedPageID, @Slotid,@AllocUnitID  
-        
-      WHILE @@FETCH_STATUS = 0  
-      BEGIN  
-          DECLARE @hex_pageid AS VARCHAR(Max)  
-          /*Page ID contains File Number and page number It looks like 0001:00000130.  
-            In this example 0001 is file Number &  00000130 is Page Number & These numbers are in Hex format*/  
-          SET @Fileid=SUBSTRING(@ConsolidatedPageID,0,CHARINDEX(':',@ConsolidatedPageID))   
-          SET @hex_pageid ='0x'+ SUBSTRING(@ConsolidatedPageID,CHARINDEX(':',@ConsolidatedPageID)+1,Len(@ConsolidatedPageID))    
-          SELECT @Pageid=Convert(INT,cast('' AS XML).value('xs:hexBinary(substring(sql:variable("@hex_pageid"),sql:column("t.pos")) )', 'varbinary(max)'))   
-          FROM (SELECT CASE substring(@hex_pageid, 1, 2) WHEN '0x' THEN 3 ELSE 0 END) AS t(pos)   
-                            
-          DELETE @temppagedata  
-            
-        
-          INSERT INTO @temppagedata EXEC( 'DBCC PAGE(' + @DataBase_Name + ', ' + @fileid + ', ' + @pageid + ', 1) with tableresults,no_infomsgs;');   
-            
-          If (Select Count(*) From @temppagedata Where [Field]='Record Type' And [Value]='INDEX_RECORD')=0  
-          Begin  
-              DELETE @temppagedata  
-              INSERT INTO @temppagedata EXEC( 'DBCC PAGE(' + @DataBase_Name + ', ' + @fileid + ', ' + @pageid + ', 3) with tableresults,no_infomsgs;');   
-          End  
-          Else  
-          Begin  
-             DELETE @temppagedata  
-          End  
-        
-          INSERT INTO @pagedata SELECT @ConsolidatedPageID,@AllocUnitID,[ParentObject],[Object],[Field] ,[Value] FROM @temppagedata  
-          FETCH NEXT FROM Page_Data_Cursor INTO  @ConsolidatedPageID, @Slotid,@AllocUnitID  
-      END  
-        
-  CLOSE Page_Data_Cursor  
-  DEALLOCATE Page_Data_Cursor  
-        
-  DECLARE @Newhexstring VARCHAR(MAX);  
-        
-  DECLARE @ModifiedRawData TABLE  
-  (  
-    [ID] INT IDENTITY(1,1),  
-    [PAGE ID] VARCHAR(MAX),  
-    [Slot ID] INT,  
-    [AllocUnitId] BIGINT,  
-    [RowLog Contents 0_var] VARCHAR(MAX),  
-    [RowLog Contents 0] VARBINARY(8000)  
-  )  
-    
-    
-    
-        
-  INSERT INTO @ModifiedRawData ([PAGE ID],[Slot ID],[AllocUnitId]  
-  ,[RowLog Contents 0_var])  
-  SELECT [Page ID],Substring([ParentObject],CHARINDEX('Slot', [ParentObject])+4, (CHARINDEX('Offset', [ParentObject])-(CHARINDEX('Slot', [ParentObject])+4)) ) as [Slot ID]  
-  ,[AllocUnitId]  
-  ,(  
-  SELECT REPLACE(STUFF((SELECT REPLACE(SUBSTRING([Value],CHARINDEX(':',[Value])+1,CHARINDEX('†',[Value])-CHARINDEX(':',[Value])),'†','')  
-  FROM @pagedata C  WHERE B.[Page ID]= C.[Page ID] And Substring(B.[ParentObject],CHARINDEX('Slot', B.[ParentObject])+4, (CHARINDEX('Offset', B.[ParentObject])-(CHARINDEX('Slot', B.[ParentObject])+4)) )=Substring(C.[ParentObject],CHARINDEX('Slot', C.[ParentObject])+4, (CHARINDEX('Offset', C.[ParentObject])-(CHARINDEX('Slot', C.[ParentObject])+4)) ) And  
-  [Object] Like '%Memory Dump%'  
-  FOR XML PATH('') ),1,1,'') ,' ','')  
-  ) AS [Value]  
-  From @pagedata B  
-  Where [Object] Like '%Memory Dump%'  
-  Group By [Page ID],[ParentObject],[AllocUnitId]  
-  Order By [Slot ID]  
-        
-    
-  UPDATE @ModifiedRawData  SET [RowLog Contents 0] = cast('' AS XML).value('xs:hexBinary(substring(sql:column("[RowLog Contents 0_var]"), 0) )', 'varbinary(max)')  
-  FROM @ModifiedRawData  
-        
-  DECLARE @RowLogContents VARBINARY(8000)  
-  Declare @AllocUnitName NVARCHAR(Max)  
-  Declare @SQL NVARCHAR(Max)  
-  DECLARE @bitTable TABLE  
-  (  
-    [ID] INT,  
-    [Bitvalue] INT  
-  )  
-    
-        
-  INSERT INTO @bitTable  
-  SELECT 0,2 UNION ALL  
-  SELECT 1,2 UNION ALL  
-  SELECT 2,4 UNION ALL  
-  SELECT 3,8 UNION ALL  
-  SELECT 4,16 UNION ALL  
-  SELECT 5,32 UNION ALL  
-  SELECT 6,64 UNION ALL  
-  SELECT 7,128  
-        
-    
-  DECLARE @DeletedRecords TABLE  
-  (  
-      [RowLogContents]    VARBINARY(8000),  
-      [AllocUnitID]       BIGINT,  
-      [Transaction ID]    NVARCHAR(Max),  
-      [Slot ID]           INT,  
-      [FixedLengthData]   SMALLINT,  
-      [TotalNoOfCols]     SMALLINT,  
-      [NullBitMapLength]  SMALLINT,  
-      [NullBytes]         VARBINARY(8000),  
-      [TotalNoofVarCols]  SMALLINT,  
-      [ColumnOffsetArray] VARBINARY(8000),  
-      [VarColumnStart]    SMALLINT,  
-      [NullBitMap]        VARCHAR(MAX)  
-  )  
-       
-    
-  ;WITH RowData AS (  
-  SELECT  
-        
-  [RowLog Contents 0] AS [RowLogContents]   
-        
-  ,[AllocUnitID] AS [AllocUnitID]   
-        
-  ,[ID] AS [Transaction ID]    
-        
-  ,[Slot ID] as [Slot ID]  
-    
-  ,CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) AS [FixedLengthData]    
-        
-     
-  ,CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2)))) as  [TotalNoOfCols]  
-        
-    
-  ,CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0)) as [NullBitMapLength]   
-        
-    
-  ,SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 3,  
-  CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0))) as [NullBytes]  
-        
-    
-  ,(CASE WHEN SUBSTRING([RowLog Contents 0], 1, 1) In (0x30,0x70) THEN  
-  CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0],  
-  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 3  
-  + CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0)), 2))))  ELSE null  END) AS [TotalNoofVarCols]   
-        
-    
-  ,(CASE WHEN SUBSTRING([RowLog Contents 0], 1, 1) In (0x30,0x70) THEN  
-  SUBSTRING([RowLog Contents 0]  
-  , CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 3  
-  + CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0)) + 2  
-  , (CASE WHEN SUBSTRING([RowLog Contents 0], 1, 1) In (0x30,0x70) THEN  
-  CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0],  
-  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 3  
-  + CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0)), 2))))  ELSE null  END)  
-  * 2)  ELSE null  END) AS [ColumnOffsetArray]   
-        
-    
-  ,CASE WHEN SUBSTRING([RowLog Contents 0], 1, 1)In (0x30,0x70)  
-  THEN  (  
-  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 4   
-        
-  + CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0))   
-        
-  + ((CASE WHEN SUBSTRING([RowLog Contents 0], 1, 1) In (0x30,0x70) THEN  
-  CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0],  
-  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 3  
-  + CONVERT(INT, ceiling(CONVERT(INT, CONVERT(BINARY(2), REVERSE(SUBSTRING([RowLog Contents 0], CONVERT(SMALLINT, CONVERT(BINARY(2)  
-  ,REVERSE(SUBSTRING([RowLog Contents 0], 2 + 1, 2)))) + 1, 2))))/8.0)), 2))))  ELSE null  END) * 2))   
-        
-  ELSE null End AS [VarColumnStart]  
-  From @ModifiedRawData  
-  ),  
-        
-    
-  N1 (n) AS (SELECT 1 UNION ALL SELECT 1),  
-  N2 (n) AS (SELECT 1 FROM N1 AS X, N1 AS Y),  
-  N3 (n) AS (SELECT 1 FROM N2 AS X, N2 AS Y),  
-  N4 (n) AS (SELECT ROW_NUMBER() OVER(ORDER BY X.n)  
-             FROM N3 AS X, N3 AS Y)  
-        
-  insert into @DeletedRecords  
-  Select   RowLogContents  
-          ,[AllocUnitID]  
-          ,[Transaction ID]  
-          ,[Slot ID]  
-          ,[FixedLengthData]  
-          ,[TotalNoOfCols]  
-          ,[NullBitMapLength]  
-          ,[NullBytes]  
-          ,[TotalNoofVarCols]  
-          ,[ColumnOffsetArray]  
-          ,[VarColumnStart]  
-             
-          ,[NullBitMap]=(REPLACE(STUFF((SELECT ',' +  
-          (CASE WHEN [ID]=0 THEN CONVERT(NVARCHAR(1),(SUBSTRING(NullBytes, n, 1) % 2))  ELSE CONVERT(NVARCHAR(1),((SUBSTRING(NullBytes, n, 1) / [Bitvalue]) % 2)) END)   
-  FROM  
-  N4 AS Nums  
-  Join RowData AS C ON n<=NullBitMapLength  
-  Cross Join @bitTable WHERE C.[RowLogContents]=D.[RowLogContents] ORDER BY [RowLogContents],n ASC FOR XML PATH('')),1,1,''),',',''))  
-  FROM RowData D  
-        
-  CREATE TABLE [#temp_Data]  
-  (  
-      [FieldName]  VARCHAR(MAX) COLLATE database_default NOT NULL,  
-      [FieldValue] VARCHAR(MAX) COLLATE database_default NOT NULL,  
-      [Rowlogcontents] VARBINARY(8000),  
-      [Transaction ID] VARCHAR(MAX) COLLATE database_default NOT NULL,  
-      [Slot ID] int  
-  )  
-    
-    
-  ;With CTE AS (  
-  /*This part is for variable data columns*/  
-  SELECT Rowlogcontents,  
-  [Transaction ID],  
-  [Slot ID],  
-  NAME ,  
-  cols.leaf_null_bit AS nullbit,  
-  leaf_offset,  
-  ISNULL(syscolumns.length, cols.max_length) AS [length],  
-  cols.system_type_id,  
-  cols.leaf_bit_position AS bitpos,  
-  ISNULL(syscolumns.xprec, cols.precision) AS xprec,  
-  ISNULL(syscolumns.xscale, cols.scale) AS xscale,  
-  SUBSTRING([nullBitMap], cols.leaf_null_bit, 1) AS is_null,  
-    
-  (CASE WHEN leaf_offset<1 and SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=0 THEN  
-  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * leaf_offset*-1) - 1, 2)))) ELSE 0 END) AS [Column value Size],  
-        
-    
-  (CASE WHEN leaf_offset<1 and SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=0 THEN  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * (leaf_offset*-1)) - 1, 2))))  
-  - ISNULL(NULLIF(CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * ((leaf_offset*-1) - 1)) - 1, 2)))), 0), [varColumnStart])  
-  ELSE 0 END) AS [Column Length]  
-        
-    
-    
-    
-  ,CASE WHEN SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=1 THEN NULL ELSE  
-  SUBSTRING(Rowlogcontents,((CASE WHEN leaf_offset<1 and SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=0 THEN CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * leaf_offset*-1) - 1, 2)))) ELSE 0 END)  
-  - ((CASE WHEN leaf_offset<1 and SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=0 THEN  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * (leaf_offset*-1)) - 1, 2))))  
-  - ISNULL(NULLIF(CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * ((leaf_offset*-1) - 1)) - 1, 2)))), 0), [varColumnStart])  
-  ELSE 0 END))) + 1,((CASE WHEN leaf_offset<1 and SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=0 THEN  CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * (leaf_offset*-1)) - 1, 2))))  
-  - ISNULL(NULLIF(CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (SUBSTRING ([ColumnOffsetArray], (2 * ((leaf_offset*-1) - 1)) - 1, 2)))), 0), [varColumnStart])  
-  ELSE 0 END))) END AS hex_Value  
-        
-  FROM @DeletedRecords A  
-  Inner Join sys.allocation_units allocunits On A.[AllocUnitId]=allocunits.[Allocation_Unit_Id]  
-  INNER JOIN sys.partitions partitions ON (allocunits.type IN (1, 3)  
-  AND partitions.hobt_id = allocunits.container_id) OR (allocunits.type = 2 AND partitions.partition_id = allocunits.container_id)  
-  INNER JOIN sys.system_internals_partition_columns cols ON cols.partition_id = partitions.partition_id  
-  LEFT OUTER JOIN syscolumns ON syscolumns.id = partitions.object_id AND syscolumns.colid = cols.partition_column_id  
-  WHERE leaf_offset<0  
-        
-  UNION  
-  /*This part is for fixed data columns*/  
-  SELECT  Rowlogcontents,  
-  [Transaction ID],  
-  [Slot ID],  
-  NAME ,  
-  cols.leaf_null_bit AS nullbit,  
-  leaf_offset,  
-  ISNULL(syscolumns.length, cols.max_length) AS [length],  
-  cols.system_type_id,  
-  cols.leaf_bit_position AS bitpos,  
-  ISNULL(syscolumns.xprec, cols.precision) AS xprec,  
-  ISNULL(syscolumns.xscale, cols.scale) AS xscale,  
-  SUBSTRING([nullBitMap], cols.leaf_null_bit, 1) AS is_null,  
-  (SELECT TOP 1 ISNULL(SUM(CASE WHEN C.leaf_offset >1 THEN max_length ELSE 0 END),0) FROM  
-  sys.system_internals_partition_columns C WHERE cols.partition_id =C.partition_id And C.leaf_null_bitAS [Column value Size],  
-  syscolumns.length AS [Column Length]  
-        
-  ,CASE WHEN SUBSTRING([nullBitMap], cols.leaf_null_bit, 1)=1 THEN NULL ELSE  
-  SUBSTRING  
-  (  
-  Rowlogcontents,(SELECT TOP 1 ISNULL(SUM(CASE WHEN C.leaf_offset >1 THEN max_length ELSE 0 END),0) FROM  
-  sys.system_internals_partition_columns C where cols.partition_id =C.partition_id And C.leaf_null_bit
-  ,syscolumns.length) END AS hex_Value  
-  FROM @DeletedRecords A  
-  Inner Join sys.allocation_units allocunits ON A.[AllocUnitId]=allocunits.[Allocation_Unit_Id]  
-  INNER JOIN sys.partitions partitions ON (allocunits.type IN (1, 3)  
-   AND partitions.hobt_id = allocunits.container_id) OR (allocunits.type = 2 AND partitions.partition_id = allocunits.container_id)  
-  INNER JOIN sys.system_internals_partition_columns cols ON cols.partition_id = partitions.partition_id  
-  LEFT OUTER JOIN syscolumns ON syscolumns.id = partitions.object_id AND syscolumns.colid = cols.partition_column_id  
-  WHERE leaf_offset>0 )  
-        
-    
-    
-    
-        
-  INSERT INTO #temp_Data  
-  SELECT NAME,  
-  CASE  
-   WHEN system_type_id IN (231, 239) THEN  LTRIM(RTRIM(CONVERT(NVARCHAR(max),hex_Value)))    
-   WHEN system_type_id IN (167,175) THEN  LTRIM(RTRIM(CONVERT(VARCHAR(max),REPLACE(hex_Value, 0x00, 0x20))))    
-   WHEN system_type_id = 48 THEN CONVERT(VARCHAR(MAX), CONVERT(TINYINT, CONVERT(BINARY(1), REVERSE (hex_Value))))   
-   WHEN system_type_id = 52 THEN CONVERT(VARCHAR(MAX), CONVERT(SMALLINT, CONVERT(BINARY(2), REVERSE (hex_Value))))   
-   WHEN system_type_id = 56 THEN CONVERT(VARCHAR(MAX), CONVERT(INT, CONVERT(BINARY(4), REVERSE(hex_Value))))   
-   WHEN system_type_id = 127 THEN CONVERT(VARCHAR(MAX), CONVERT(BIGINT, CONVERT(BINARY(8), REVERSE(hex_Value))))  
-   WHEN system_type_id = 61 Then CONVERT(VARCHAR(MAX),CONVERT(DATETIME,CONVERT(VARBINARY(8000),REVERSE (hex_Value))),100)   
-   WHEN system_type_id =58 Then CONVERT(VARCHAR(MAX),CONVERT(SMALLDATETIME,CONVERT(VARBINARY(8000),REVERSE(hex_Value))),100)   
-   WHEN system_type_id = 108 THEN CONVERT(VARCHAR(MAX),CONVERT(NUMERIC(38,20), CONVERT(VARBINARY,CONVERT(VARBINARY(1),xprec)+CONVERT(VARBINARY(1),xscale))+CONVERT(VARBINARY(1),0) + hex_Value))   
-   WHEN system_type_id In(60,122) THEN CONVERT(VARCHAR(MAX),Convert(MONEY,Convert(VARBINARY(8000),Reverse(hex_Value))),2)   
-     
-   WHEN system_type_id =106 And xscale=1 THEN CONVERT(VARCHAR(MAX), CAST(CONVERT(Decimal(38,34), CONVERT(VARBINARY,Convert(VARBINARY,xprec)+CONVERT(VARBINARY,xscale))+CONVERT(VARBINARY(1),0) + hex_Value) as FLOAT))   
-       
-  When system_type_id =106 And xscale=0 THEN CONVERT(VARCHAR(MAX),CONVERT(bigINT,CONVERT(BINARY(8), REVERSE(hex_Value))))  
-   WHEN system_type_id = 104 THEN CONVERT(VARCHAR(MAX),CONVERT (BIT,CONVERT(BINARY(1), hex_Value)%2))    
-   WHEN system_type_id =62 THEN  RTRIM(LTRIM(STR(CONVERT(FLOAT,SIGN(CAST(CONVERT(VARBINARY(8000),Reverse(hex_Value)) AS BIGINT)) * (1.0 + (CAST(CONVERT(VARBINARY(8000),Reverse(hex_Value)) AS BIGINT) & 0x000FFFFFFFFFFFFF) * POWER(CAST(2 AS FLOAT), -52)) * POWER(CAST(2 AS FLOAT),((CAST(CONVERT(VARBINARY(8000),Reverse(hex_Value)) AS BIGINT) & 0x7ff0000000000000) / EXP(52 * LOG(2))-1023))),53,LEN(hex_Value))))   
-   When system_type_id =59 THEN  Left(LTRIM(STR(CAST(SIGN(CAST(Convert(VARBINARY(8000),REVERSE(hex_Value)) AS BIGINT))* (1.0 + (CAST(CONVERT(VARBINARY(8000),Reverse(hex_Value)) AS BIGINT) & 0x007FFFFF) * POWER(CAST(2 AS Real), -23)) * POWER(CAST(2 AS Real),(((CAST(CONVERT(VARBINARY(8000),Reverse(hex_Value)) AS INT) )& 0x7f800000)/ EXP(23 * LOG(2))-127))AS REAL),23,23)),8)   
-   WHEN system_type_id In (165,173) THEN (CASE WHEN CHARINDEX(0x,cast('' AS XML).value('xs:hexBinary(sql:column("hex_Value"))', 'VARBINARY(8000)')) = 0 THEN '0x' ELSE '' END) +cast('' AS XML).value('xs:hexBinary(sql:column("hex_Value"))', 'varchar(max)')   
-   WHEN system_type_id =36 THEN CONVERT(VARCHAR(MAX),CONVERT(UNIQUEIDENTIFIER,hex_Value))   
-   END AS FieldValue  
-  ,[Rowlogcontents]  
-  ,[Transaction ID]  
-  ,[Slot ID]  
-  FROM CTE ORDER BY nullbit  
-        
-    
-        
-  DECLARE @FieldName VARCHAR(max)  
-  SET @FieldName = STUFF(  
-  (  
-  SELECT ',' + CAST(QUOTENAME([Name]) AS VARCHAR(MAX)) FROM syscolumns WHERE id=object_id('' + @SchemaName_n_TableName + '')  
-        
-  FOR XML PATH('')  
-  ), 1, 1, '')  
-        
-    
-    
-  SET @sql = 'SELECT ' + @FieldName  + ' FROM #temp_Data   
-  PIVOT (Min([FieldValue]) FOR FieldName IN (' + @FieldName  + ')) AS pvt  
-  ORDER BY Convert(int,[Transaction ID],Convert(int,[Slot ID]))'  
-        
-  EXEC sp_executesql @sql  
-        
-  GO