USP_BBAMODELINGANDPROPENSITYFILEIMPORT_CREATEAUXILIARYRESEARCHGROUPS
Regenerates the auxiliary research groups based on the given name and size.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RESEARCHGROUPNAME | nvarchar(100) | IN | |
@RESEARCHGROUPDESCRIPTION | nvarchar(255) | IN | |
@AUXILIARYRESEARCHGROUPSIZE | int | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_BBAMODELINGANDPROPENSITYFILEIMPORT_CREATEAUXILIARYRESEARCHGROUPS (
@RESEARCHGROUPNAME nvarchar(100),
@RESEARCHGROUPDESCRIPTION nvarchar(255) = '',
@AUXILIARYRESEARCHGROUPSIZE integer = 2500,
@CHANGEAGENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null
) as
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETCHANGEAGENT @CHANGEAGENTID output;
begin try
declare @contextCache varbinary(128);
--cache current context information
set @contextCache = CONTEXT_INFO();
--set CONTEXT_INFO to @CHANGEAGENTID
set CONTEXT_INFO @CHANGEAGENTID;
delete
dbo.RESEARCHGROUP
from
dbo.RESEARCHGROUP RG
where
RG.NAME <> @RESEARCHGROUPNAME and RG.NAME like @RESEARCHGROUPNAME+ '%';
declare @AUXILIARYRESEARCHGROUPSTOCREATE integer;
select
@AUXILIARYRESEARCHGROUPSTOCREATE = ceiling(cast(count(RGM.ID) as float) / cast(@AUXILIARYRESEARCHGROUPSIZE as float))
from dbo.RESEARCHGROUPMEMBER RGM
inner join dbo.RESEARCHGROUP RG on RG.ID = RGM.RESEARCHGROUPID
where RG.NAME = @RESEARCHGROUPNAME;
if @AUXILIARYRESEARCHGROUPSTOCREATE > 0 begin
declare @CURRENTAUXILIARYRESEARCHGROUPNUMBER int;
set @CURRENTAUXILIARYRESEARCHGROUPNUMBER = 1;
while @CURRENTAUXILIARYRESEARCHGROUPNUMBER <= @AUXILIARYRESEARCHGROUPSTOCREATE begin
insert into dbo.RESEARCHGROUP (
NAME,
DESCRIPTION,
OWNERID,
OTHERSCANVIEW,
OTHERSCANMODIFY,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
ADMINONLY
)
values (
@RESEARCHGROUPNAME + ' ' + cast(@CURRENTAUXILIARYRESEARCHGROUPNUMBER as nvarchar(20)),
@RESEARCHGROUPDESCRIPTION,
@CURRENTAPPUSERID,
0,
0,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE,
1
);
set @CURRENTAUXILIARYRESEARCHGROUPNUMBER = @CURRENTAUXILIARYRESEARCHGROUPNUMBER + 1;
end;
with AUXILIARYRESEARCHGROUPFORCONSTITUENT_CTE as (
select
ceiling(cast(row_number() over (order by RGM.ID desc) as float) / cast(@AUXILIARYRESEARCHGROUPSIZE as float)) AUXILIARYRESEARCHGROUPNUMBER,
RGM.CONSTITUENTID CONSTITUENTID
from dbo.RESEARCHGROUPMEMBER RGM
inner join dbo.RESEARCHGROUP RG on RG.ID = RGM.RESEARCHGROUPID
where RG.NAME = @RESEARCHGROUPNAME
)
insert into dbo.RESEARCHGROUPMEMBER (
RESEARCHGROUPID,
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
RG.ID,
CONSTITUENTID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from AUXILIARYRESEARCHGROUPFORCONSTITUENT_CTE
left join dbo.RESEARCHGROUP RG on RG.NAME = @RESEARCHGROUPNAME + ' ' + cast(AUXILIARYRESEARCHGROUPNUMBER as nvarchar(20));
select
RG.ID,
COUNT(RGM.ID)
from dbo.RESEARCHGROUP RG
left join dbo.RESEARCHGROUPMEMBER RGM on RGM.RESEARCHGROUPID = RG.ID
where RG.NAME like @RESEARCHGROUPNAME + '%'
group by RG.ID;
set @CURRENTAUXILIARYRESEARCHGROUPNUMBER = 1;
declare @CURRENTRESEARCHGROUPID uniqueidentifier;
while @CURRENTAUXILIARYRESEARCHGROUPNUMBER <= @AUXILIARYRESEARCHGROUPSTOCREATE begin
select @CURRENTRESEARCHGROUPID = RG.ID from dbo.RESEARCHGROUP RG where RG.NAME = @RESEARCHGROUPNAME + ' ' + cast(@CURRENTAUXILIARYRESEARCHGROUPNUMBER as nvarchar(20));
exec dbo.USP_RESEARCHGROUP_RECALCULATENUMMEMBERS @CURRENTRESEARCHGROUPID, @CHANGEAGENTID;
set @CURRENTAUXILIARYRESEARCHGROUPNUMBER = @CURRENTAUXILIARYRESEARCHGROUPNUMBER + 1;
end;
end
--reset CONTEXT_INFO to previous value
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;