USP_PROGRAMEVENTLOCATION_INSERTLOCATIONS
Inserts program locations.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@EVENTS | xml | IN | |
@LOCATIONS | xml | IN | |
@PROGRAMID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@CONFLICTSEXIST | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_PROGRAMEVENTLOCATION_INSERTLOCATIONS
(
@EVENTS xml,
@LOCATIONS xml,
@PROGRAMID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null,
@CONFLICTSEXIST bit = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CURRENTDATE is null
set @CURRENTDATE = getdate();
declare @idoc int;
exec sp_xml_preparedocument @idoc OUTPUT, @EVENTS;
-- PUT LOCATIONS HERE
with LOCATIONS_CTE as
(
select
T.locations.value('(EVENTLOCATIONID)[1]', 'uniqueidentifier') as EVENTLOCATIONID,
T.locations.value('(CAPACITY)[1]', 'integer') as CAPACITY,
T.locations.value('(SEQUENCE)[1]', 'integer') as SEQUENCE,
@PROGRAMID as PROGRAMID
from @LOCATIONS.nodes('/LOCATIONS/ITEM') T(locations)
)
insert into dbo.PROGRAMEVENTLOCATION
(
ID,
EVENTID,
EVENTCONFLICTID,
EVENTLOCATIONID,
SEQUENCE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
newid(),
eventid,
null,
LCTE.EVENTLOCATIONID,
LCTE.SEQUENCE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from LOCATIONS_CTE LCTE
INNER JOIN openxml (@idoc,'/EVENTS/ITEM', 2)
with
(EVENTID uniqueidentifier,
PROGRAMID uniqueidentifier,
ISCONFLICT bit) P
on LCTE.PROGRAMID = P.PROGRAMID
where ISCONFLICT = 0
if @CONFLICTSEXIST = 1 or @CONFLICTSEXIST is null
begin
declare @CON uniqueidentifier;
with LOCATIONS2_CTE as
(
select
T.locations.value('(EVENTLOCATIONID)[1]', 'uniqueidentifier') as EVENTLOCATIONID,
T.locations.value('(CAPACITY)[1]', 'integer') as CAPACITY,
T.locations.value('(SEQUENCE)[1]', 'integer') as SEQUENCE,
@PROGRAMID as PROGRAMID
from @LOCATIONS.nodes('/LOCATIONS/ITEM') T(locations)
)
insert into dbo.PROGRAMEVENTLOCATION
(
ID,
EVENTID,
EVENTCONFLICTID,
EVENTLOCATIONID,
SEQUENCE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select
newid(),
null,
CONFLICTID,
LCTE.EVENTLOCATIONID,
LCTE.SEQUENCE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from LOCATIONS2_CTE LCTE
INNER JOIN openxml (@idoc,'/EVENTS/ITEM', 2)
with
(CONFLICTID uniqueidentifier,
PROGRAMID uniqueidentifier,
ISCONFLICT bit) P
on LCTE.PROGRAMID = P.PROGRAMID
where ISCONFLICT = 1
end
exec sp_xml_removedocument @idoc