USP_MKTSEGMENTATION_EXPORTDEFINITIONFILELAYOUT

Selects export definition layout information pertaining to an export definition.

Parameters

Parameter Parameter Type Mode Description
@EXPORTDEFINITIONID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.[USP_MKTSEGMENTATION_EXPORTDEFINITIONFILELAYOUT]
(
  @EXPORTDEFINITIONID uniqueidentifier = null
)
as
  set nocount on;

  declare @QUERYVIEWCATALOGID as uniqueidentifier;
  declare @CUSTOMQUERYVIEWCATALOGID as uniqueidentifier;
  declare @OUTPUTDEFINITIONXML as xml;
  declare @MAILINGTYPECODE as tinyint;

  declare @RESULTS table
  (
    [QUERYVIEWCATALOGID] uniqueidentifier,
    [DISPLAYNAME] nvarchar(255),
    [PATHALIAS] nvarchar(255),
    [CATEGORY] nvarchar(255),
    [HEADERNAME] nvarchar(255),
    [DATATYPE] nvarchar(255),
    [SEQUENCE] int,
    [MAILINGTYPECODE] tinyint,
    [FIELDISHIDDEN] nvarchar(5),
    [OUTPUTFIELDTYPECODE] tinyint
  );

  declare @SPECIALFIELDS table
  (
    [QUERYVIEWCATALOGID] uniqueidentifier not null,
    [QUERYFIELD] nvarchar(255),
    [DATA_TYPE] nvarchar(128) not null,
    [CHARACTER_MAXIMUM_LENGTH] int,
    [NUMERIC_PRECISION] tinyint,
    [NUMERIC_SCALE] int,
    [DOMAIN_NAME] nvarchar(128)
  );

  select 
    @MAILINGTYPECODE = [MKTEXPORTDEFINITION].[MAILINGTYPECODE]
  from dbo.[MKTEXPORTDEFINITION]
  where [ID] = @EXPORTDEFINITIONID;

  if dbo.[UFN_INSTALLEDPRODUCTS_PRODUCTIS]('BB9873D7-F1ED-430A-8AB4-F09F47056538') = 0 -- only perform this block for enterprise products

    begin
      declare @BBECRECORDSOURCEID uniqueidentifier;
      set @BBECRECORDSOURCEID = dbo.[UFN_MKTRECORDSOURCE_GETFIRSTBBECRECORDSOURCEID]();

      -- add the BBEC contact addressee as a special field

      insert into @SPECIALFIELDS
        select @BBECRECORDSOURCEID, 'CONTACTADDRESSEE', 'nvarchar', '700', null, null, null;

      if @MAILINGTYPECODE = 2 -- membership mailings

        insert into @SPECIALFIELDS
          select [QUERYVIEWCATALOGID], 'ISMEMBER', 'bit', null, null, null, null
          from dbo.[MKTMEMBERSHIPRECORDSOURCE]
          where [ID] = @BBECRECORDSOURCEID;
    end

  declare QUERYVIEWCURSOR cursor local fast_forward for
    select distinct
      [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID],
      [MKTEXPORTDEFINITIONOUTPUTFIELD].[CUSTOMQUERYVIEWCATALOGID]
    from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD]
    where [EXPORTDEFINITIONID] = @EXPORTDEFINITIONID;

  open QUERYVIEWCURSOR
  fetch next from QUERYVIEWCURSOR into @QUERYVIEWCATALOGID, @CUSTOMQUERYVIEWCATALOGID;

  while (@@FETCH_STATUS = 0)
  begin

    if @CUSTOMQUERYVIEWCATALOGID is not null
      begin
        select 
          @OUTPUTDEFINITIONXML = [QUERYVIEWCATALOG].[OUTPUTDEFINITIONXML] 
        from dbo.[QUERYVIEWCATALOG] 
        where [QUERYVIEWCATALOG].[ID] = @CUSTOMQUERYVIEWCATALOGID;

        --Insert custom query view output fields into the results table.

        insert into @RESULTS
          select
            @QUERYVIEWCATALOGID,
            [SQVC].[DISPLAYNAME],
            substring([VIEWPATH],patindex('%\%',[VIEWPATH]) + 1,1500) [PATHALIAS],
            T.c.value('(@Category)[1]','nvarchar(255)'),
            [MKTEXPORTDEFINITIONOUTPUTFIELD].[NAME] as [HEADERNAME],
            coalesce([SCHEMAQV].[DATA_TYPE], [SPECIALFIELDS].[DATA_TYPE]) as [DATATYPE],
            (select min([S].[SEQUENCE]) from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD] as [S] where [S].[EXPORTDEFINITIONID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[EXPORTDEFINITIONID] and [S].[NAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[NAME]) as [SEQUENCE],
            @MAILINGTYPECODE,
            isnull(T.c.value('(@IsHidden)[1]','nvarchar(5)'), 'false'),
            [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE]
          from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD]
            left outer join dbo.[QUERYVIEWCATALOG] [SQVC] on [SQVC].[ID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID]
            left outer join dbo.[QUERYVIEWCATALOG] as [QVC] on [QVC].[ID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[CUSTOMQUERYVIEWCATALOGID]
            --left outer join dbo.[TABLECATALOG] on ([TABLECATALOG].[TABLENAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD] and [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE] in (1, 3))

            --left outer join dbo.[SMARTFIELD] on [SMARTFIELD].[TABLECATALOGID] = [TABLECATALOG].[ID]

            left outer join [INFORMATION_SCHEMA].[COLUMNS] as [SCHEMAQV] on [SCHEMAQV].[TABLE_SCHEMA] = 'dbo' and [SCHEMAQV].[TABLE_NAME] = [QVC].[OBJECTNAME] and [SCHEMAQV].[COLUMN_NAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
            --left outer join [INFORMATION_SCHEMA].[COLUMNS] as [SCHEMASF] on [SCHEMASF].[TABLE_SCHEMA] = 'dbo' and [SCHEMASF].[TABLE_NAME] = ('V_QUERY_' + [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]) and [SCHEMASF].[COLUMN_NAME] = (case [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE] when 1 then [SMARTFIELD].[VALUECOLUMNNAME] when 3 then 'VALUEGROUP' else null end)

            left outer join @SPECIALFIELDS as [SPECIALFIELDS] on [SPECIALFIELDS].[QUERYVIEWCATALOGID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID] and [SPECIALFIELDS].[QUERYFIELD] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
            left outer join @OUTPUTDEFINITIONXML.nodes('declare namespace QV="bb_appfx_queryview";/QueryViewOutput/QV:OutputFields/QV:OutputField') T(c) on T.c.value('(@Name)[1]','nvarchar(255)') = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
            --inner join dbo.[QUERYVIEWRELATIONSHIP] on [QUERYVIEWRELATIONSHIP].[ID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[CUSTOMQUERYVIEWRELATIONSHIPID]

          where [MKTEXPORTDEFINITIONOUTPUTFIELD].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID
            and [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID
            and [MKTEXPORTDEFINITIONOUTPUTFIELD].[CUSTOMQUERYVIEWCATALOGID] = @CUSTOMQUERYVIEWCATALOGID;
      end

    else if @QUERYVIEWCATALOGID is not null 
      begin
        select 
          @OUTPUTDEFINITIONXML = [QUERYVIEWCATALOG].[OUTPUTDEFINITIONXML] 
        from dbo.[QUERYVIEWCATALOG] 
        where [QUERYVIEWCATALOG].[ID] = @QUERYVIEWCATALOGID;

        --Insert non-custom query view output fields into the results table.

        insert into @RESULTS
          select
            @QUERYVIEWCATALOGID,
            [QVC].[DISPLAYNAME],
            null as [PATHALIAS],
            T.c.value('(@Category)[1]','nvarchar(255)'),
            [MKTEXPORTDEFINITIONOUTPUTFIELD].[NAME] as [HEADERNAME],
            coalesce([SCHEMAQV].[DATA_TYPE], [SPECIALFIELDS].[DATA_TYPE]) as [DATATYPE],
            (select min([S].[SEQUENCE]) from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD] as [S] where [S].[EXPORTDEFINITIONID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[EXPORTDEFINITIONID] and [S].[NAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[NAME]) as [SEQUENCE],
            @MAILINGTYPECODE,
            isnull(T.c.value('(@IsHidden)[1]','nvarchar(5)'), 'false'),
            [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE]
          from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD]
            left outer join dbo.[QUERYVIEWCATALOG] [QVC] on [QVC].[ID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID]
            --left outer join dbo.[TABLECATALOG] on ([TABLECATALOG].[TABLENAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD] and [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE] in (1, 3))

            --left outer join dbo.[SMARTFIELD] on [SMARTFIELD].[TABLECATALOGID] = [TABLECATALOG].[ID]

            left outer join [INFORMATION_SCHEMA].[COLUMNS] as [SCHEMAQV] on [SCHEMAQV].[TABLE_SCHEMA] = 'dbo' and [SCHEMAQV].[TABLE_NAME] = [QVC].[OBJECTNAME] and [SCHEMAQV].[COLUMN_NAME] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
            --left outer join [INFORMATION_SCHEMA].[COLUMNS] as [SCHEMASF] on [SCHEMASF].[TABLE_SCHEMA] = 'dbo' and [SCHEMASF].[TABLE_NAME] = ('V_QUERY_' + [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]) and [SCHEMASF].[COLUMN_NAME] = (case [MKTEXPORTDEFINITIONOUTPUTFIELD].[TYPECODE] when 1 then [SMARTFIELD].[VALUECOLUMNNAME] when 3 then 'VALUEGROUP' else null end)

            left outer join @SPECIALFIELDS as [SPECIALFIELDS] on [SPECIALFIELDS].[QUERYVIEWCATALOGID] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID] and [SPECIALFIELDS].[QUERYFIELD] = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
            left outer join @OUTPUTDEFINITIONXML.nodes('declare namespace QV="bb_appfx_queryview";/QueryViewOutput/QV:OutputFields/QV:OutputField') T(c) on T.c.value('(@Name)[1]','nvarchar(255)') = [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYFIELD]
          where [MKTEXPORTDEFINITIONOUTPUTFIELD].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID 
            and [MKTEXPORTDEFINITIONOUTPUTFIELD].[QUERYVIEWCATALOGID] = @QUERYVIEWCATALOGID
            and [MKTEXPORTDEFINITIONOUTPUTFIELD].[CUSTOMQUERYVIEWCATALOGID] is null;   
      end

    fetch next from QUERYVIEWCURSOR into @QUERYVIEWCATALOGID, @CUSTOMQUERYVIEWCATALOGID;
  end;

  close QUERYVIEWCURSOR;
  deallocate QUERYVIEWCURSOR;

  select
    [QUERYVIEWCATALOGID],
    [DISPLAYNAME],
    [PATHALIAS],
    [CATEGORY],
    [HEADERNAME],
    [DATATYPE],
    [SEQUENCE],
    [MAILINGTYPECODE],
    [FIELDISHIDDEN],
    [OUTPUTFIELDTYPECODE]
  from @RESULTS
  order by [SEQUENCE];

  return 0;