USP_DATALIST_APPEALMAILINGSETUPSELECTIONCOUNT

Returns a distinct count for a collection of selections.

Parameters

Parameter Parameter Type Mode Description
@SELECTEDSELECTIONS xml IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_APPEALMAILINGSETUPSELECTIONCOUNT
(
    @SELECTEDSELECTIONS xml
)
as
    set nocount on;

    declare @ID uniqueidentifier;
    declare @SQL nvarchar(max) = '';
    declare @EXECSQL nvarchar(max) = 'select count([ALLSELECTIONS].[ID]) as TOTALCOUNT from (';
    declare SELECTIONCURSOR cursor local fast_forward for
        select
            T.c.value('(SELECTIONID)[1]', 'uniqueidentifier') as ID
        from    
            @SELECTEDSELECTIONS.nodes('/SELECTEDSELECTIONS/ITEM') T(c);

    open SELECTIONCURSOR;
    fetch next from SELECTIONCURSOR into @ID
    while (@@FETCH_STATUS = 0)
    begin
        exec dbo.[USP_SELECTIONHELPER_BUILDIDSELECTSQL] @ID, @SQL output;
        set @EXECSQL +=  N'(' + @SQL + ')';

        fetch next from SELECTIONCURSOR into @ID;

        if @@FETCH_STATUS = 0
            set @EXECSQL += ' union ';
    end

    close SELECTIONCURSOR;
    deallocate SELECTIONCURSOR;

    set @EXECSQL += ') as ALLSELECTIONS;';

    exec sp_executesql @EXECSQL;