USP_AUDITHELP_GET_SOURCE_VS_AUDIT_COLUMNS

Parameters

Parameter Parameter Type Mode Description
@SOURCETABLENAME nvarchar(128) IN

Definition

Copy

CREATE procedure [dbo].[USP_AUDITHELP_GET_SOURCE_VS_AUDIT_COLUMNS] (@SOURCETABLENAME  nvarchar(128))
as
/*
gets the fields in the source table and the matching columns in the audit table.
Used to make sure the fields in the source exist exactly on the audit table
*/

declare @auditTableName nvarchar(128)
set @auditTableName = @SOURCETABLENAME + 'AUDIT'

select 
    SOURCE.COLUMN_NAME as SOURCECOLUMNNAME, 
    coalesce(AUDIT.COLUMN_NAME, '') as AUDITCOLUMNNAME,
    SOURCE.DATA_TYPE as SOURCEDATATYPE,
    coalesce(AUDIT.DATA_TYPE, '') as AUDITDATATYPE, 
    coalesce(SOURCE.CHARACTER_MAXIMUM_LENGTH, 0) as SOURCECHARACTERMAXIMUMLENGTH, 
    coalesce(AUDIT.CHARACTER_MAXIMUM_LENGTH, 0) as AUDITCHARACTERMAXIMUMLENGTH,
    coalesce(SOURCE.DOMAIN_NAME, '') as SOURCEDOMAINNAME, 
    coalesce(AUDIT.DOMAIN_NAME, '') as AUDITDOMAINNAME,
    coalesce(SOURCE.NUMERIC_PRECISION, 0) as SOURCEPRECISION,
    coalesce(SOURCE.NUMERIC_SCALE, 0) as SOURCESCALE,
    coalesce(AUDIT.NUMERIC_PRECISION, 0) as AUDITPRECISION,
    coalesce(AUDIT.NUMERIC_SCALE, 0) as AUDITSCALE

from
    (select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, DOMAIN_NAME, NUMERIC_PRECISION, NUMERIC_SCALE
    from INFORMATION_SCHEMA.COLUMNS 
    where (TABLE_SCHEMA = 'dbo') and (TABLE_NAME = @SOURCETABLENAME) and (COLUMN_NAME not in ('ID', 'TS', 'TSLONG')) 
    and (COLUMNPROPERTY(OBJECT_ID('[' + TABLE_CATALOG + '].[' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']'), COLUMN_NAME, 'IsComputed') = 0
    ) as SOURCE 

    left outer join 

    (select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH, DOMAIN_NAME, NUMERIC_PRECISION, NUMERIC_SCALE
    from INFORMATION_SCHEMA.COLUMNS 
    where (TABLE_SCHEMA = 'dbo') and (TABLE_NAME = @AUDITTABLENAME)
    ) as AUDIT 

on SOURCE.COLUMN_NAME = AUDIT.COLUMN_NAME;

return 0;