从我的ASP.Net应用程序中,我生成XML并将其作为输入数据传递给存储过程,如下所示,
<Aprroval>
<Approve>
<is_nb_approved>false</is_nb_approved>
<is_approved>true</is_approved>
<is_submitted>true</is_submitted>
<UserId>35</UserId>
<ClientId>405</ClientId>
<taskDate>2015-05-23T00:00:00</taskDate>
</Approve>
<Approve>
<is_nb_approved>false</is_nb_approved>
<is_approved>true</is_approved>
<is_submitted>true</is_submitted>
<UserId>35</UserId>
<ClientId>405</ClientId>
<taskDate>2015-05-24T00:00:00</taskDate>
</Approve>
</Approval>
以下是我的存储过程,
create procedure UpdateTaskStatus(@XMLdata XML)
AS
UPDATE [TT_TaskDetail]
SET
is_approved=Row.t.value('(is_approved/text())[1]','bit'),
is_nb_approved=Row.t.value('(is_nb_approved/text())[1]','bit'),
is_submitted=Row.t.value('(is_submitted/text())[1]','bit')
FROM @XMLdata.nodes('/Aprroval/Aprrove') as Row(t)
WHERE user_id = Row.t.value('(UserId/text())[1]','int')
AND client_id = Row.t.value('(ClientId/text())[1]','int')
AND taskdate = Row.t.value('(taskDate/text())[1]','date')
但是当我执行这个存储过程时,我得到的返回值为0
并且没有记录得到更新。欢迎任何建议。
答案 0 :(得分:1)
您的外部标签不匹配。你的开场标签上写着&#34; Aprroval&#34;而不是&#34;批准&#34;。一旦我纠正了这一点,我就可以毫无问题地从XML中进行选择。
答案 1 :(得分:1)
xml中有2个错误:
首先是不匹配的根标签。
其次,更重要的是,您正在查询nodes('/Aprroval/Aprrove')
,但内部标记为Approve
而不是Aprrove
。