我将以下xml传递给SQL Server存储过程:
<root>
<id>6063</id>
<id>6064</id>
</root>
在我的存储过程中,我有以下代码来选择id:
SELECT t.n.value('id[1]', 'int')
FROM @xml.nodes('/root') as t(n)
现在这可行,但它显然只选择第一个id并停止。我不太确定如何制作这个'循环'并选择xml文件中的所有id。
非常感谢任何帮助。
以下是完整的存储过程供参考:
BEGIN
DECLARE @xml xml = '<root>
<id>6063</id>
<id>6064</id>
</root>'
SELECT t.n.value('id[1]', 'int') as id
FROM @xml.nodes('/root') as t(n)
END
答案 0 :(得分:4)
此SQL应该适合您:
DECLARE @xml xml = '<root>
<id>6063</id>
<id>6064</id>
</root>'
SELECT t.n.value('text()[1]', 'int') as id
FROM @xml.nodes('/root/id') as t(n)
此查询的结果是:
id
----
6063
6064
我没有从root
元素中进行选择,而是选择id
下的所有root
元素并使用text()
来读取值。
希望有所帮助。