USP_DUPLICATESEARCH_MKTSEGMENTGENERATE
This provides the ability to search for duplicates when creating multiple segments.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTS | xml | IN | Segments |
@SEGMENTTYPECODE | tinyint | IN | Segment type code |
@MAXROWS | smallint | IN | Input parameter indicating the maximum number of rows to return. |
Definition
Copy
CREATE procedure dbo.[USP_DUPLICATESEARCH_MKTSEGMENTGENERATE]
(
@SEGMENTS xml = null,
@SEGMENTTYPECODE tinyint,
@MAXROWS smallint = 100
)
as
set nocount on;
declare @NAME nvarchar(100);
declare @CODE nvarchar(10);
declare @SELECTIONS xml;
declare @TEMP table (
[ID] uniqueidentifier,
[NAME] nvarchar(100),
[DESCRIPTION] nvarchar(255),
[CODE] nvarchar(10),
[INUSE] bit,
[DUPLICATESELECTION] bit,
[DUPLICATECODE] bit
);
declare @DUPLICATES table (
[SEGMENTNAME] nvarchar(100),
[SEGMENTCODE] nvarchar(50),
[DUPLICATEID] uniqueidentifier,
[DUPLICATENAME] nvarchar(100),
[DUPLICATEDESCRIPTION] nvarchar(255),
[DUPLICATECODE] nvarchar(10),
[DUPLICATEINUSE] bit,
[HASDUPLICATESELECTION] bit,
[HASDUPLICATECODE] bit
);
if not @SEGMENTS is null
begin
declare SEGMENTS cursor local fast_forward for
select
T.c.value('(SEGMENTNAME)[1]','nvarchar(100)') as [NAME],
T.c.value('(SEGMENTCODE)[1]','nvarchar(50)') as [CODE],
T.c.query('SELECTIONS') as [SELECTIONS]
from @SEGMENTS.nodes('/SEGMENTS/ITEM') T(c);
open SEGMENTS;
fetch next from SEGMENTS into @NAME, @CODE, @SELECTIONS;
while (@@FETCH_STATUS = 0)
begin
delete from @TEMP;
--Find any duplicates for this segment...
insert into @TEMP ([ID], [NAME], [DESCRIPTION], [CODE], [INUSE], [DUPLICATESELECTION], [DUPLICATECODE])
exec dbo.[USP_MKTSEGMENT_FINDDUPLICATES]
@SEGMENTTYPECODE = @SEGMENTTYPECODE,
@CODE = @CODE,
@SELECTIONS = @SELECTIONS,
@MAXROWS = @MAXROWS;
--Insert the duplicates into our return table...
insert into @DUPLICATES ([SEGMENTNAME], [SEGMENTCODE], [DUPLICATEID], [DUPLICATENAME], [DUPLICATEDESCRIPTION], [DUPLICATECODE], [DUPLICATEINUSE], [HASDUPLICATESELECTION], [HASDUPLICATECODE])
select
@NAME,
@CODE,
[ID],
[NAME],
[DESCRIPTION],
[CODE],
[INUSE],
[DUPLICATESELECTION],
[DUPLICATECODE]
from @TEMP;
fetch next from SEGMENTS into @NAME, @CODE, @SELECTIONS;
end;
close SEGMENTS;
deallocate SEGMENTS;
end
--Return all the duplicates...
select
[SEGMENTNAME],
[SEGMENTCODE],
[DUPLICATEID],
[DUPLICATENAME],
[DUPLICATEDESCRIPTION],
[DUPLICATECODE],
[DUPLICATEINUSE],
[HASDUPLICATESELECTION],
[HASDUPLICATECODE]
from @DUPLICATES;
return 0;