USP_SEGMENT_CREATEFROMSELECTIONS

Creates a segment and adds selections to segment.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@NAME nvarchar(100) INOUT
@DESCRIPTION nvarchar(255) INOUT
@SELECTIONS xml IN
@COUNT int INOUT
@SEGMENTATIONGENERATORID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_SEGMENT_CREATEFROMSELECTIONS
            (
                @ID uniqueidentifier = null output,
                @NAME nvarchar(100) output,
                @DESCRIPTION nvarchar(255) output,
                @SELECTIONS xml,
                @COUNT int output,
                @SEGMENTATIONGENERATORID uniqueidentifier = null,
                @CHANGEAGENTID uniqueidentifier = null
            )
            as
                set nocount on;

                declare @CURRENTDATE datetime;
                set @CURRENTDATE = getDate();

                if @CHANGEAGENTID is null  
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                begin try
                    if @SEGMENTATIONGENERATORID is not null
                    begin
                        declare @SEGMENTATIONGENERATORNAME nvarchar(150);
                        declare @QUERYVIEWCATALOGID uniqueidentifier;
                        select
                            @SEGMENTATIONGENERATORNAME = SEGMENTATIONGENERATOR.NAME,
                            @QUERYVIEWCATALOGID = SEGMENTATIONGENERATOR.QUERYVIEWCATALOGID
                        from
                            dbo.SEGMENTATIONGENERATOR
                        where
                            SEGMENTATIONGENERATOR.ID = @SEGMENTATIONGENERATORID;

                        set @NAME = @SEGMENTATIONGENERATORNAME + ' ' + @NAME;
                        set @DESCRIPTION = @DESCRIPTION + ' ' + @SEGMENTATIONGENERATORNAME;
                    end

                    select
                        @ID = ID
                    from
                        dbo.MKTSEGMENT
                    where
                        NAME = @NAME;

                    if @ID is null
                    begin
                        set @ID = newID();

                        insert into dbo.MKTSEGMENT
                        (ID, NAME, DESCRIPTION, SEGMENTTYPECODE, CODE, QUERYVIEWCATALOGID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                        (
                            @ID,
                            dbo.UFN_MKTSEGMENT_GETUNIQUENAME(@ID, @NAME, null),
                            @DESCRIPTION,
                            1, --Standard

                            '',
                            @QUERYVIEWCATALOGID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        );

                        exec dbo.USP_SEGMENT_GETSELECTIONS_ADDFROMXML @ID, @SELECTIONS, @CHANGEAGENTID;
                    end
                    else
                    begin
                        update dbo.MKTSEGMENT
                        set
                            DESCRIPTION = DESCRIPTION,
                            SEGMENTTYPECODE = 1, --Standard

                            CODE = '',
                            QUERYVIEWCATALOGID = @QUERYVIEWCATALOGID,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CURRENTDATE
                        where
                            ID = @ID;

                        exec dbo.USP_SEGMENT_GETSELECTIONS_UPDATEFROMXML @ID, @SELECTIONS, @CHANGEAGENTID;
                    end

                    -- create the VIEW and add it to the IDSETREGISTER

                    exec dbo.USP_MKTSEGMENT_CREATEORUPDATEVIEW @ID, @CHANGEAGENTID;

                    -- get count

                    exec dbo.USP_SEGMENT_GETCOUNT @ID, @COUNT output;

                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;