Hi,
I have some problem with stored procedure taking an
XML
as Input parameter.
Xml
will be like this
<DocumentElement>
<AssignReAssignRo>
<ActivityID>92</ActivityID>
<UserID>1489420939</UserID>
<CampusID>129</CampusID>
<Aging>-370</Aging>
<StatusID>1</StatusID>
</AssignReAssignRo>
<AssignReAssignRo>
<ActivityID>90</ActivityID>
<UserID>-99</UserID>
<CampusID>129</CampusID>
<Aging>-156</Aging>
<StatusID>1</StatusID>
</AssignReAssignRo>
</DocumentElement>
1. I need to update table based on
ActivityID
in
XML
and that is happening.
the problem is that ....
student table ------------------>
Activity Table
(
studentID
- primary key) --> (
studentID
-foreign key (
student table
) )
Activity Table
May contains multiple records with same
studentid
(Child Records).
I need to update those child records as well based on the
Statusid
(
if statusid=1
then only need to update),
means for each Record in
XML
I need to loop through the table and do a search for any child record exists with that student id.(if exists then need to be updated as well)
here is my procedure ...
ALTER PROCEDURE [dbo].[RmsUpdateRoAssignReAssign1]
(
@XMLAssignRo AS XML
)
AS
BEGIN
UPDATE RmsActivity
SET
RmsProcessorID = DocumentElement.AssignReAssignRo.value('(UserID)[1]', 'INT' ),
LastUpdatedByID= DocumentElement.AssignReAssignRo.value('(UserID)[1]', 'INT' ),
LastUpdatedDate=GETDATE(),
ROAssignedDate=GETDATE(),
RmsStatusID=
CASE
WHEN DocumentElement.AssignReAssignRo.value('(StatusID)[1]', 'INT' )=1
THEN 2
ELSE DocumentElement.AssignReAssignRo.value('(StatusID)[1]', 'INT' )
END
FROM
@XMLAssignRo.nodes('/DocumentElement/AssignReAssignRo') DocumentElement(AssignReAssignRo)
INNER JOIN RmsUserSkillSet RS
ON
RS.RmsSkillSetTypeID =
CASE
WHEN DocumentElement.AssignReAssignRo.value('(Aging)[1]', 'INT' )BETWEEN 0 AND 20 THEN 1
ELSE
CASE
WHEN DocumentElement.AssignReAssignRo.value('(Aging)[1]', 'INT' ) BETWEEN 0 AND 30 THEN 2
ELSE
CASE
WHEN DocumentElement.AssignReAssignRo.value('(Aging)[1]', 'INT' ) >=0 THEN 3
END
END
END
INNER JOIN tblRoamingUsers RU
ON RS.RoamingUserID=RU.RoamingUserID
AND RU.UserID=DocumentElement.AssignReAssignRo.value('(UserID)[1]', 'INT' )
INNER JOIN tblCampus C
ON C.CampusID=DocumentElement.AssignReAssignRo.value('(CampusID)[1]', 'INT' )
AND RU.SchoolID=C.SchoolID
WHERE
RmsActivityID = DocumentElement.AssignReAssignRo.value('(ActivityID)[1]', 'INT' )
END
Please help me.
Thanks...