USP_SEGMENTGROUP_GETCOUNT
Gets the total count of constituents for a given segment group.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SEGMENTGROUPID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_SEGMENTGROUP_GETCOUNT
(
@SEGMENTGROUPID uniqueidentifier
)
with execute as owner
as
set nocount on;
declare @TABLENAME nvarchar(255);
declare @VIEWNAME nvarchar(255);
declare @VALUECOLUMNNAME nvarchar(255);
declare TABLECURSOR cursor local fast_forward for
(
select
TABLECATALOG.TABLENAME,
IDSETREGISTER.DBOBJECTNAME,
SMARTFIELD.VALUECOLUMNNAME
from
dbo.MKTSEGMENT
left outer join dbo.IDSETREGISTER on IDSETREGISTER.ID = MKTSEGMENT.IDSETREGISTERID
left outer join dbo.MKTGROUPSEGMENTS on MKTGROUPSEGMENTS.SEGMENTID = MKTSEGMENT.ID
left outer join dbo.MKTSEGMENTSELECTION on MKTSEGMENTSELECTION.SEGMENTID = MKTSEGMENT.ID
left outer join dbo.SMARTFIELDVALUEGROUPIDSETREGISTER on SMARTFIELDVALUEGROUPIDSETREGISTER.IDSETREGISTERID = MKTSEGMENTSELECTION.SELECTIONID
left outer join dbo.SMARTFIELDVALUEGROUP on SMARTFIELDVALUEGROUP.ID = SMARTFIELDVALUEGROUPIDSETREGISTER.SMARTFIELDVALUEGROUPID
left outer join dbo.SMARTFIELD on SMARTFIELD.ID = SMARTFIELDVALUEGROUP.SMARTFIELDID
left outer join dbo.TABLECATALOG on TABLECATALOG.ID = SMARTFIELD.TABLECATALOGID
where
MKTGROUPSEGMENTS.SEGMENTGROUPID = @SEGMENTGROUPID
and (SMARTFIELD.SMARTFIELDCATALOGID = '7F0415B0-8077-4E7E-BEF4-92146799EFC3' or SMARTFIELD.SMARTFIELDCATALOGID is null)
)
declare @TOTALCOUNT int;
declare @COUNT int;
set @TOTALCOUNT = 0;
set @COUNT = 0;
open TABLECURSOR;
fetch next from TABLECURSOR into @TABLENAME, @VIEWNAME, @VALUECOLUMNNAME;
if (@@FETCH_STATUS = 0)
begin
while (@@FETCH_STATUS = 0)
begin
declare @SQL nvarchar(max);
if LEN(@TABLENAME) > 0
begin
set @SQL = 'select @COUNT = COUNT(<%TABLENAME%>.ID) from dbo.<%TABLENAME%> inner join dbo.<%VIEWNAME%> on <%VIEWNAME%>.ID = <%TABLENAME%>.ID;';
set @SQL = REPLACE(REPLACE(REPLACE(@SQL, '<%VIEWNAME%>', @VIEWNAME), '<%TABLENAME%>', @TABLENAME), '<%VALUECOLUMNNAME%>', @VALUECOLUMNNAME)
end
else
begin
set @SQL = 'select @COUNT = COUNT(<%VIEWNAME%>.ID) from dbo.<%VIEWNAME%>;';
set @SQL = REPLACE(@SQL, '<%VIEWNAME%>', @VIEWNAME);
end
exec sp_executesql @SQL, N'@COUNT int output', @COUNT output;
set @TOTALCOUNT = @TOTALCOUNT + @COUNT;
fetch next from TABLECURSOR into @TABLENAME, @VIEWNAME, @VALUECOLUMNNAME;
end
close TABLECURSOR;
deallocate TABLECURSOR;
end
select @TOTALCOUNT;
return 0;