2015-06-15 53 views
0

從我的ASP.Net應用程序我生成XML,並把它作爲輸入數據如下存儲過程,使用更新SQL Server表的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

你嘗試只是從XML選擇? –

+0

是的,沒有返回任何東西 – Sangeetha

回答

1

您在xml中遇到2錯誤:

首先是不匹配的根標記。

其次,更重要的是,您在查詢nodes('/Aprroval/Aprrove'),但內標籤爲Approve而不是Aprrove

小提琴http://sqlfiddle.com/#!3/66b08/3

1

您的外部標籤不匹配。您的開標籤上寫着「Aprroval」,而不是「批准」。一旦我糾正了這一問題,我就可以毫無問題地從XML中進行選擇。