Получить идентификаторы для нескольких вставленных строк, используя ввод XML - PullRequest
2 голосов
/ 15 июля 2011

У меня есть запрос, который принимает XML в качестве входных данных. Как я могу вернуть все идентификаторы, которые были созданы во время вставки?

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)

Я не уверен, как лучше вернуть новый идентификатор.

1 Ответ

4 голосов
/ 15 июля 2011

Используйте предложение OUTPUT .

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;
...