使用XML作为SP的输入变量

时间:2011-03-08 13:42:58

标签: xml tsql

我正在获取XML参数,现在我想从中获取数据并使用该数据并调用另一个SP。

现在我正在尝试拆分输入xml变量。

DECLARE @XML XML Set @XML = '<Products>
                        <product>
                            <id>3</id>
                            <name>Testar 3</name>
                        </product>
                        <product>
                            <id>6</id>
                            <name>Testar 6</name>
                        </product>
                        <product>
                            <id>15</id>
                            <name>Testar 15</name>
                        </product>
                    </Products>'

SELECT      CAST(A.B.query('./product/id/text()') AS VARCHAR(20)) as id,    CAST(A.B.query('./product/name/text()') AS VARCHAR(50)) as name  FROM @XML.nodes('/Products') as A(B)

但是这只能得到1行,其中2列看起来像这样。

ID          Name 
3615        Testar 3Testar 6Testar 15

但我想要的是这个

ID          Name
3           Testar 3
6           Testar 6
15          Testar 15

我需要改变什么才能实现这一目标?

由于 马格努斯

1 个答案:

答案 0 :(得分:4)

select 
  P.value('id[1]', 'int') as ID,
  P.value('name[1]', 'varchar(50)') as Name
from @XML.nodes('Products/product') as P(P)