XML树是 -
<OrderLine>
<Item>ABC</Item>
<Lot>
<Serial>SR1</Serial>
<Quantity>1</Quantity>
</Lot>
<Lot>
<Serial>SR1</Serial>
<Quantity>1</Quantity>
</Lot>
</OrderLine>
尝试在SQL Server 2005(存储过程)中使用openxml解析此树的元素值时,只读取一个。
这是代码 -
select item, lots
from openxml(@intDataAreaRoot, 'OrderLine', 2)
with ( item nvarchar(31) 'Item',
lots xml 'Lot'
)
我用它来声明一个游标,然后解析&amp;处理树中可能存在的行数。但每个&#34; fetch&#34;只带来一个&#34; Lot&#34;节点。我需要处理所有&#34; Lot&#34; &#34; OrderLine&#34;下的节点节点。
感谢任何帮助。
答案 0 :(得分:0)
使用SQL Server 2005中的原生XQuery 支持尝试这样的事情:
DECLARE @intDataAreaRoot XML = '<OrderLine>
<Item>ABC</Item>
<Lot>
<Serial>SR1</Serial>
<Quantity>1</Quantity>
</Lot>
<Lot>
<Serial>SR2</Serial>
<Quantity>21</Quantity>
</Lot>
</OrderLine>'
SELECT
Item = @intDataAreaRoot.value('(/OrderLine/Item)[1]', 'varchar(25)'),
xc.value('(Serial)[1]', 'varchar(20)'),
xc.value('(Quantity)[1]', 'int')
FROM
@intDataAreaRoot.nodes('/OrderLine/Lot') AS XT(XC)
这给了我一个输出:
Item (No column name) (No column name)
---------------------------------------------
ABC SR1 1
ABC SR2 21