xml - 使用 xml 输入获取多个插入行的 ID

标签 xml sql-server-2005 stored-procedures

我有一个接受 xml 作为输入的查询。如何返回插入期间创建的所有 ID?

insert into Table1 
(
    FirstName, Age
)
SELECT 
    T.item.query('./FirstName').value('.', 'varchar(54)') FirstName,
    T.item.query('./Age').value('.', 'int') Age,
    FROM @Collection.nodes('/ROWS/ROW') AS T(Item)

我不确定返回新 ID 的最佳方式。

最佳答案

使用OUTPUT clause .

DECLARE @InsertedIDs table(ID int);

INSERT INTO Table1
    (FirstName, Age)
    OUTPUT INSERTED.ID
        INTO @InsertedIDs 
    SELECT 
        T.item.query('./FirstName').value('.', 'varchar(54)') FirstName,
        T.item.query('./Age').value('.', 'int') Age,
        FROM @Collection.nodes('/ROWS/ROW') AS T(Item);

SELECT ID FROM @InsertedIDs;

关于xml - 使用 xml 输入获取多个插入行的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6711978/

相关文章:

oracle - 在 Toad 的输出参数中显示结果

java - 优化 DOM 和 XPath Java 代码

sql - 从 3 个表中选择 2 列

sql - 如何查找前一行和当前行的差异

sql - 将 SQL 日期时间四舍五入到午夜

sql - 遍历 XML 节点并在 SQL Server 中发送电子邮件

Mysql 存储过程 if (select....) > 变量 then

xml - 读取 XML 属性 VBA

python - 使用 Python 的 xml.dom.minidom

android - 如何在 AndroidManifest.xml 中指定超过 1 个自定义应用程序作为我的应用程序?