USP_MKTEXPORTDEFINITIONOUTPUTFIELD_LOAD
Returns a list of all output fields for a specific export definition.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EXPORTDEFINITIONID | uniqueidentifier | IN | |
@SEGMENTATIONID | uniqueidentifier | IN | |
@APPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_MKTEXPORTDEFINITIONOUTPUTFIELD_LOAD]
(
@EXPORTDEFINITIONID uniqueidentifier,
@SEGMENTATIONID uniqueidentifier = null,
@APPUSERID uniqueidentifier
)
as
set nocount on;
declare @FIELDS table (
[ID] uniqueidentifier,
[NAME] nvarchar(255),
[QUERYVIEWCATALOGID] uniqueidentifier,
[CUSTOMQUERYVIEWCATALOGID] uniqueidentifier,
[QUERYFIELD] nvarchar(255),
[QUERYFIELDDISPLAYNAME] nvarchar(255),
[TYPECODE] tinyint,
[TYPE] nvarchar(20),
[SEQUENCE] integer,
[DATATYPE] nvarchar(128),
[ISALLOWED] bit,
[VIEWPATH] nvarchar(4000));
declare @SPECIALFIELDS table(
[QUERYVIEWCATALOGID] uniqueidentifier not null,
[QUERYFIELD] nvarchar(255),
[DATA_TYPE] nvarchar(128) not null,
[DOMAIN_NAME] nvarchar(128));
declare @MAILINGTYPECODE tinyint;
declare @ID uniqueidentifier;
declare @NAME nvarchar(255);
declare @QUERYVIEWCATALOGID uniqueidentifier;
declare @CUSTOMQUERYVIEWCATALOGID uniqueidentifier;
declare @QUERYFIELD nvarchar(255);
declare @QUERYFIELDDISPLAYNAME nvarchar(255);
declare @TYPECODE tinyint;
declare @TYPE nvarchar(20);
declare @SEQUENCE integer;
declare @DATATYPE nvarchar(128);
declare @VALID bit;
declare @OUTPUTDEFINITIONXML xml;
declare @ISALLOWED bit;
declare @VIEWPATH nvarchar(4000);
select
@MAILINGTYPECODE = [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]();
if not @BBECRECORDSOURCEID is null
begin
-- add the BBEC contact addressee as a special field
insert into @SPECIALFIELDS
select @BBECRECORDSOURCEID, 'CONTACTADDRESSEE', 'nvarchar', null;
if @MAILINGTYPECODE = 2 -- membership mailings
insert into @SPECIALFIELDS
select [QUERYVIEWCATALOGID], 'ISMEMBER', 'bit', null
from dbo.[MKTMEMBERSHIPRECORDSOURCE]
where [ID] = @BBECRECORDSOURCEID;
end
end
declare FIELDS cursor local fast_forward for
select
[E].[ID],
[E].[NAME],
(case when [E].[QUERYVIEWCATALOGID] = 'D67B643B-F31A-4A6A-88DD-5992DD670D26'
then 'B453E917-6B30-4B7C-B83A-E3444B18A318'
else [E].[QUERYVIEWCATALOGID]
end) as [QUERYVIEWCATALOGID],
[E].[CUSTOMQUERYVIEWCATALOGID],
[E].[QUERYFIELD],
isnull((case when [E].[CUSTOMQUERYVIEWCATALOGID] is not null
then dbo.[UFN_QUERYVIEW_GETFIELDCAPTION]([E].[CUSTOMQUERYVIEWCATALOGID], [E].[QUERYFIELD])
else dbo.[UFN_QUERYVIEW_GETFIELDCAPTION]([E].[QUERYVIEWCATALOGID], [E].[QUERYFIELD])
end), [E].[NAME]) as [QUERYFIELDDISPLAYNAME],
[E].[TYPECODE],
[E].[TYPE],
[E].[SEQUENCE],
coalesce([SCHEMAQV].[DOMAIN_NAME], [SCHEMASF].[DOMAIN_NAME], [SCHEMAQV].[DATA_TYPE], [SCHEMASF].[DATA_TYPE], [SPECIALFIELDS].[DOMAIN_NAME], [SPECIALFIELDS].[DATA_TYPE]) as [DATATYPE],
case when [CUSTOMQUERYVIEWCATALOGID] is not null
then
case when ([CUSTOMQUERYVIEWCATALOGID] in (select [OKVIEWS].[QUERYVIEWCATALOGID] from dbo.[UFN_SECURITY_GETGRANTEDQUERYVIEWSFORUSER](@APPUSERID) [OKVIEWS])
or dbo.[UFN_APPUSER_ISSYSADMIN](@APPUSERID) = 1) then 1 else 0 end
else 1 end as [ISALLOWED],
[E].[VIEWPATH]
from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD] as [E]
left outer join dbo.[QUERYVIEWCATALOG] as [QVC] on [QVC].[ID] = isnull([E].[CUSTOMQUERYVIEWCATALOGID], [E].[QUERYVIEWCATALOGID])
left outer join dbo.[TABLECATALOG] on ([TABLECATALOG].[TABLENAME] = [E].[QUERYFIELD] and [E].[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] = [E].[QUERYFIELD]
left outer join [INFORMATION_SCHEMA].[COLUMNS] as [SCHEMASF] on [SCHEMASF].[TABLE_SCHEMA] = 'dbo' and [SCHEMASF].[TABLE_NAME] = ('V_QUERY_' + [E].[QUERYFIELD]) and [SCHEMASF].[COLUMN_NAME] = (case [E].[TYPECODE] when 1 then 'VALUE' when 3 then 'VALUEGROUP' else null end)
left outer join @SPECIALFIELDS as [SPECIALFIELDS] on [SPECIALFIELDS].[QUERYVIEWCATALOGID] = [E].[QUERYVIEWCATALOGID] and [SPECIALFIELDS].[QUERYFIELD] = [E].[QUERYFIELD]
where [E].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID
and (@SEGMENTATIONID is null
or [E].[QUERYVIEWCATALOGID] in (select [ID] from dbo.[UFN_MKTEXPORTDEFINITION_GETSPECIALQUERYVIEWIDS]())
or [E].[QUERYVIEWCATALOGID] in
(
select
case when @MAILINGTYPECODE = 0 -- Appeal
then isnull([MKTCONSOLIDATEDQUERYVIEWSPEC].[CONSOLIDATEDQUERYVIEWCATALOGID], [RS].[QUERYVIEWCATALOGID])
-- else is valid for Acknowledgement, Membership Mailings
else [RS].[QUERYVIEWCATALOGID]
end
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID) [RS]
left outer join dbo.[MKTCONSOLIDATEDQUERYVIEWSPEC] on [MKTCONSOLIDATEDQUERYVIEWSPEC].[ID] = [RS].[QUERYVIEWCATALOGID]
)
or (@MAILINGTYPECODE = 1 and [E].[QUERYVIEWCATALOGID] in
(
select
[GRS].[QUERYVIEWCATALOGID]
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID) [RS]
inner join dbo.[MKTGIFTRECORDSOURCE] [GRS] on [GRS].[ID] = [RS].[QUERYVIEWCATALOGID]
))
or (@MAILINGTYPECODE = 2 and [E].[QUERYVIEWCATALOGID] in
(
select
[MRS].[QUERYVIEWCATALOGID]
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID) [RS]
inner join dbo.[MKTMEMBERSHIPRECORDSOURCE] [MRS] on [MRS].[ID] = [RS].[QUERYVIEWCATALOGID]
))
or (@MAILINGTYPECODE = 3 and [E].[QUERYVIEWCATALOGID] in
(
select
[MRS].[QUERYVIEWCATALOGID]
from dbo.[UFN_MKTSEGMENTATION_GETDISTINCTRECORDSOURCES](@SEGMENTATIONID) [RS]
inner join dbo.[MKTSPONSORSHIPRECORDSOURCE] [MRS] on [MRS].[ID] = [RS].[QUERYVIEWCATALOGID]
)))
order by (select min([F].[SEQUENCE]) from dbo.[MKTEXPORTDEFINITIONOUTPUTFIELD] as [F] where [F].[EXPORTDEFINITIONID] = @EXPORTDEFINITIONID and [F].[NAME] = [E].[NAME]), [SEQUENCE];
open FIELDS;
fetch next from FIELDS into @ID, @NAME, @QUERYVIEWCATALOGID, @CUSTOMQUERYVIEWCATALOGID, @QUERYFIELD, @QUERYFIELDDISPLAYNAME, @TYPECODE, @TYPE, @SEQUENCE, @DATATYPE, @ISALLOWED, @VIEWPATH;
while (@@FETCH_STATUS = 0)
begin
set @VALID = 1;
if @TYPECODE = 1 or @TYPECODE = 3 -- smart field
set @VALID = (case when exists(select top 1 1 from INFORMATION_SCHEMA.TABLES where [TABLE_SCHEMA] = 'dbo' and [TABLE_NAME] = @QUERYFIELD)
and exists(select top 1 1
from dbo.[TABLECATALOG]
inner join dbo.[SMARTFIELD] on [SMARTFIELD].[TABLECATALOGID] = [TABLECATALOG].[ID]
where [TABLECATALOG].[TABLENAME] = @QUERYFIELD)
then 1 else 0 end);
else
if @TYPECODE = 2 -- custom query view field
begin
select
@OUTPUTDEFINITIONXML = [OUTPUTDEFINITIONXML]
from dbo.[QUERYVIEWCATALOG]
where [ID] = @CUSTOMQUERYVIEWCATALOGID;
if @OUTPUTDEFINITIONXML is not null
set @VALID = (case when exists(select top 1 1
from @OUTPUTDEFINITIONXML.nodes('declare namespace QV="bb_appfx_queryview";/QueryViewOutput/QV:OutputFields/QV:OutputField') T(c)
where T.c.value('(@Name)[1]','nvarchar(255)') = @QUERYFIELD)
then 1 else 0 end);
else
set @VALID = 0;
end;
if @VALID = 1
insert into @FIELDS values (@ID, @NAME, @QUERYVIEWCATALOGID, @CUSTOMQUERYVIEWCATALOGID, @QUERYFIELD, @QUERYFIELDDISPLAYNAME, @TYPECODE, @TYPE, @SEQUENCE, @DATATYPE, @ISALLOWED, @VIEWPATH);
fetch next from FIELDS into @ID, @NAME, @QUERYVIEWCATALOGID, @CUSTOMQUERYVIEWCATALOGID, @QUERYFIELD, @QUERYFIELDDISPLAYNAME, @TYPECODE, @TYPE, @SEQUENCE, @DATATYPE, @ISALLOWED, @VIEWPATH;
end;
close FIELDS;
deallocate FIELDS;
select
[ID],
[NAME],
[QUERYVIEWCATALOGID],
[CUSTOMQUERYVIEWCATALOGID],
[QUERYFIELD],
[QUERYFIELDDISPLAYNAME],
[TYPECODE],
[TYPE],
[SEQUENCE],
[DATATYPE],
[ISALLOWED],
[VIEWPATH]
from @FIELDS
order by [SEQUENCE];
return 0;