2017-08-24 131 views
1

我正在測試這個簡單的腳本,只是想知道爲什麼它不起作用。從XML節點提取數據

DECLARE @myDoc xml 
DECLARE @ProdID int 

SET @myDoc = 
    '<Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" hdl="47/4/SB8_3-910-8243-19/0/113" odobjid="915"> 
     <Datatypevalue id="2" name="Intermittent" /> 
     <Datatypevalue id="1" name="Continuous" /> 
     <Datatypevalue id="0" name="Off" /> 
    </Datatype>' 

SET @ProdID = @myDoc.value('(Datatype/@id)[1]', 'int') 
SELECT @ProdID 

希望你能提供幫助。謝謝。

回答

1

你只是根本無視這是你的<Datatype>節點上定義的默認XML命名空間:

<Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" 
      ************** 

您需要包括在您的查詢!

像這樣:

;WITH XMLNAMESPACES(DEFAULT 'V8_0_1') 
SELECT @myDoc.value('(Datatype/@id)[1]', 'INT') 

,你會得到的

113 
+0

預期輸出謝謝! ...我不知道我需要將NameSpace添加到我的腳本中。它現在有效。 – user3015739