USP_VALIDATION_DEFAULTDIMENSIONROWS

Parameters

Parameter Parameter Type Mode Description
@INCLUDEEXTENSIONS bit IN

Definition

Copy

CREATE procedure [BBDW].[USP_VALIDATION_DEFAULTDIMENSIONROWS] 
(
  @INCLUDEEXTENSIONS bit
)
as

declare @SCHEMA nvarchar(255);
declare @TABLE nvarchar(255);
declare @COLUMN nvarchar(255);
declare @SQL nvarchar(max);
declare @TEST int;
declare @EXCEPTIONMESSAGE nvarchar(255);
declare @TOTALEXCEPTIONCOUNT int = 0;

declare [DIMTABLE] cursor local fast_forward for
  select    
    s.[name] [TABLE_SCEMA],
    t.[name] [TABLE_NAME],
    c.[name] [COLUMN_NAME]
  from 
    sys.tables t
    inner join sys.schemas s on s.[schema_id] = t.[schema_id]
    inner join sys.columns c on c.[object_id] = t.[object_id]
    inner join sys.extended_properties as ep on ep.[major_id] = t.[object_id] and ep.[minor_id] = 0
    inner join sys.index_columns ic on ic.[column_id] = c.[column_id] and ic.[object_id] = t.[object_id]
    inner join sys.indexes i on ic.[object_id] = i.[object_id] and ic.[index_id] = i.[index_id]
  where
    i.[is_primary_key] = 1 and
    ep.[name] = 'MS_Description' and cast(ep.[value] as nvarchar(max)) not like 'DEPRECATED%' and
    (t.[name] like 'DIM_%' or (@INCLUDEEXTENSIONS = 1 and t.[name] like 'USR_%')) and
    t.[name] not like '%_STAGE' and
    (@INCLUDEEXTENSIONS = 1 or t.[name] not like '%_EXT');

open [DIMTABLE];    
fetch next from [DIMTABLE] into @SCHEMA, @TABLE, @COLUMN;

while(@@fetch_status <> -1)
begin
  set @TEST = 0;

  set @SQL = 'select @TEST = 1 from [' + @SCHEMA + '].[' + @TABLE + '] t with (nolock) where t.[' + @COLUMN + '] = 0;';

  exec sp_executesql @SQL, N'@TEST int output', @TEST = @TEST output;

  if @TEST = 0
    begin
      set @EXCEPTIONMESSAGE = 'There is no default row on dimension table [' + @SCHEMA + '].[' + @TABLE + ']'
      exec BBDW.[USP_VALIDATIONEXCEPTIONLOG] 'Missing Default Dimension Row', @EXCEPTIONMESSAGE
      set @TOTALEXCEPTIONCOUNT = @TOTALEXCEPTIONCOUNT + 1
     end

  fetch next from [DIMTABLE] into @SCHEMA, @TABLE, @COLUMN;
end  

select @TOTALEXCEPTIONCOUNT;