2017-08-24 25 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

関連する問題