【发布时间】:2012-01-19 09:08:41
【问题描述】:
更多的反思是一个问题。我正在创建一个以 xml 作为输入参数的存储过程,并且在查询数据时遇到了一些问题。
这是查询之一
DECLARE @xVar XML
SET @xVar =
'<?xml version="1.0"?>
<Workflow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://ait.com/workflow/">
<Users>
<User ObjectId="1232">
<UserId>123</UserId>
</User>
<User ObjectId="1232">
<UserId>124</UserId>
</User>
</Users>
</Workflow>';
WITH XMLNAMESPACES(DEFAULT 'http://ait.com/workflow/')
SELECT [UserId] = reportdata.item.value('UserId[1]', 'varchar(36)')
FROM @xVar.nodes('//Workflow/Users/User') AS reportdata(item)
这只是返回 xml 文档中的用户 ID。如果我仔细看看 select 语句的最后一部分
FROM @xVar.nodes('//Workflow/Users/User') AS reportdata(item)
它有效并且看起来合乎逻辑,从根开始并指定路径,我奇怪的是这也有效
FROM @xVar.nodes('//Users/User') AS reportdata(item)
甚至更奇怪的是它的工作原理
FROM @xVar.nodes('//User') AS reportdata(item)
可能错过了 XML Book for dummy 中的某些页面,请有人赐教
【问题讨论】:
标签: xml tsql stored-procedures