USP_GLOBALCHANGE_DELETEEVENTATTRIBUTE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SELECTEDEVENTS | xml | IN | |
@ATTRIBUTECATEGORYID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_DELETEEVENTATTRIBUTE
(
@SELECTEDEVENTS xml = null,
@ATTRIBUTECATEGORYID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount off;
declare @ATTRIBUTETABLENAME nvarchar(128)
declare @ONEPERRECORD bit
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
select
@ATTRIBUTETABLENAME = TABLECATALOG.TABLENAME,
@ONEPERRECORD = ATTRIBUTECATEGORY.ONLYALLOWONEPERRECORD
from
dbo.ATTRIBUTECATEGORY
inner join dbo.TABLECATALOG on TABLECATALOG.ID = ATTRIBUTECATEGORY.TABLECATALOGID
where
ATTRIBUTECATEGORY.ID = @ATTRIBUTECATEGORYID;
declare @SELECTIONTABLESQL nvarchar(100);
declare @SELECTION nvarchar(43);
set @SELECTION = '';
begin try
declare @CONTEXTCACHE varbinary(128);
declare @DELETESQL nvarchar(max);
if @SELECTEDEVENTS is not null
begin
if @ONEPERRECORD = 1
set @DELETESQL = 'delete from dbo.[' + @ATTRIBUTETABLENAME + ']
where ID in (
select EVENTID FROM (SELECT T.c.value(''(EVENTID)[1]'',''uniqueidentifier'') AS ''EVENTID''
from @SELECTEDEVENTSXML.nodes(''/SELECTEDEVENTS/ITEM'') T(c)) AS XMLTABLE
WHERE exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(XMLTABLE.EVENTID) EVENTSITE
where
(dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAM) = 1
or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAM,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20)
where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
)
)'
else
set @DELETESQL = 'delete from dbo.[' + @ATTRIBUTETABLENAME + ']
where EventID in (
select EVENTID FROM (SELECT T.c.value(''(EVENTID)[1]'',''uniqueidentifier'') AS ''EVENTID''
from @SELECTEDEVENTSXML.nodes(''/SELECTEDEVENTS/ITEM'') T(c)) AS XMLTABLE
WHERE exists(
select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(XMLTABLE.EVENTID) EVENTSITE
where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERIDPARAM) = 1
or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERIDPARAM,''800093A6-B727-490B-8CC4-C0C0CF2148F0'',20)
where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
)
)'
/* Cache current context information@ */
set @CONTEXTCACHE = CONTEXT_INFO();
/* Set CONTEXT_INFO to @CHANGEAGENTID */
set CONTEXT_INFO @CHANGEAGENTID;
/* delete records */
exec sp_executesql @DELETESQL,N'@SELECTEDEVENTSXML XML=null,@CURRENTAPPUSERIDPARAM uniqueidentifier=null',@SELECTEDEVENTSXML = @SELECTEDEVENTS,@CURRENTAPPUSERIDPARAM=@CURRENTAPPUSERID
set @NUMBERDELETED = @@ROWCOUNT;
/* Reset CONTEXT_INFO to previous value */
if not @contextCache is null begin
set CONTEXT_INFO @CONTEXTCACHE;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch