USP_CONSTITUENTSMARTFIELD_CONSTITUENTEXISTSINSELECTION

Returns a boolean value indicating if constituents exists in a specific selection.

Parameters

Parameter Parameter Type Mode Description
@SELECTIONID uniqueidentifier IN
@ASOF datetime IN
@SITES xml IN

Definition

Copy


      CREATE procedure dbo.USP_CONSTITUENTSMARTFIELD_CONSTITUENTEXISTSINSELECTION
      (
        @SELECTIONID uniqueidentifier,
        @ASOF datetime,
        @SITES xml = null
      )
      as
        /*
        This smart field will returns a boolean value indicating if constituents exists in a specific selection
        */

        set nocount on;

        if not exists (select T.c.value('(SITEID)[1]','uniqueidentifier') from @SITES.nodes('/SITES/ITEM') T(c))
          set @SITES = null;

        /*
        --Exist in a Selection...
        */
        declare @SQL nvarchar(max) ='
        select 
            [CONSTITUENT].[ID],
            case                             
            when 
             [CONSTITUENT].[ID] in (select [ID] from dbo.[UFN_IDSETREADER_GETRESULTS_GUID](@SELECTIONID))
            then
              cast(1 as bit)
            else
              cast(0 as bit)
            end
          from dbo.[CONSTITUENT]' + char(13);

        if @SITES is not null
        begin
          set @SQL = @SQL + 'where ((@SITES is null) or exists(select 1 from dbo.[CONSTITUENTSITE] inner join dbo.[UFN_CONSTITUENT_GETSITES_FROMITEMLISTXML](@SITES) [SITES] on [SITES].[SITEID] = [CONSTITUENTSITE].[SITEID] where [CONSTITUENTSITE].[CONSTITUENTID] = [CONSTITUENT].[ID]))';

          exec sp_executesql @sql, N'@SELECTIONID uniqueidentifier, @SITES xml', @SELECTIONID, @SITES;
        end
        else
          exec sp_executesql @sql, N'@SELECTIONID uniqueidentifier', @SELECTIONID;