在存储过程中选择多个XML元素

时间:2013-07-03 23:00:27

标签: sql sql-server stored-procedures xquery

我将以下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

1 个答案:

答案 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()来读取值。

希望有所帮助。