我正在测试这个简单的脚本,只是想知道为什么它没有用。
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
希望你能提供帮助。感谢。
答案 0 :(得分: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