我需要使用T-SQL Rowset吗?

时间:2010-07-06 16:55:47

标签: sql-server tsql rowset

所以我正在尝试将作为Oracle应用程序的Web服务转换为T-SQL。有趣的是,我只有Web服务代码,根本没有数据库代码。我看到有一个包含<ROWSET><ROW NUM=\"1\"><TRANSACTIONID>123456</TRANSACTIONID></ROW></ROWSET>

的输入参数

我正在查看T-SQL的文档,我似乎无法找到任何有助于我可以用这个xml做什么。根据我的理解,它用于将值插入表中,因为每个调用中的元素都不相似。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

假设XMLT-SQL存储过程或函数的参数,您可以使用OPENXML实用程序来处理此类数据。 Here是一个完整的例子(为了清楚起见,转载于此处):

DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<people>
  <person id="1">
    <firstname>John</firstname>
    <surname>Doe</surname>
  </person>
  <person id="2">
    <firstname>Mary</firstname>
    <surname>Jane</surname>
  </person>
</people>
'
/* Create an internal representation of the XML document */
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT    *
FROM       OPENXML (@idoc, '/people/person',1)
            WITH (id varchar(20),
                  firstname varchar(20) 'firstname',
                  surname varchar(20) 'surname')
EXECUTE sp_xml_removedocument @idoc

结果:

id  firstname       surname
1   John            Doe
2   Mary            Jane