Как вставить несколько столбцов в таблицу с помощью OUTPUT в SQL Server?
Прокрутите вниз до части OUTPUT. Это дает мне красное подчеркивание. Я хочу вставить в InsertedCreditDebitAdjustmentIDs
таблица, идентификатор вставлен в @CreditDebitAdjustment
вместе с InvoiceNum. Как мне это сделать?
DECLARE @InsertedCreditDebitAdjustmentIDs TABLE
(
ID INT,
InvoiceNumber VARCHAR(50)
)
INSERT INTO @CreditDebitAdjustment ( col1, col2, ...)
SELECT @ImportedFileID AS '@ImportedFileID',
tbl.col.value('(Purpose/text())[1]', 'VARCHAR(500)') AS Purpose,
etc.
FROM @XML.nodes('/CreditDebitAdjustments/CreditDebitAdjustment') AS tbl (col)
OUTPUT INSERTED.CreditDebitAdjustmentID, etc. INTO @InsertedCreditDebitAdjustmentIDs
2 ответа
Решение
Положить ваши OUTPUT clause
сразу после тебя INSERT INTO
Скажите что-то врут это....
INSERT INTO TableName (Column1, Column2, Column3.....)
OUTPUT inserted.Column1 , inserted.Column2 INTO @TableName
SELECT Column1, Column2, Column3.....
FROM Table_name
На заметку я бы предложил вам сохранить XML Shredding
и ваш INSERT
операции в отдельных заявлениях. любой платок в вашем XML может оставить вам много работы:)
сделайте измельчение отдельно, вставьте результаты во временную таблицу, после чего вставьте в целевые таблицы.
Идет:
TARGET (insert/update etc.)
OUTPUT (direct or into another table)
SOURCE (select/values etc.)
Так что вам просто нужно переключить порядок:
INSERT dbo.tablename(column1, column2, ...)
OUTPUT INSERTED.col1, INSERTED.col2, ... [INTO ...]
SELECT @var1, col1, etc. FROM elsewhere...
См. Примеры документации OUTPUT Clause (Transact-SQL).