如何在SQLServer中使用输出将多列插入表中?
向下滚动到输出部分。它给了我一条红色的下划线。我想将插入到如何在SQLServer中使用输出将多列插入表中?,sql,sql-server,output-clause,Sql,Sql Server,Output Clause,向下滚动到输出部分。它给了我一条红色的下划线。我想将插入到insertedCreditDebitadJustmentId表中的ID与InvoiceNum一起插入到@CreditDebitAdjustment。我该怎么做呢 DECLARE @InsertedCreditDebitAdjustmentIDs TABLE ( ID INT, InvoiceNumber VARCHAR(50) ) INSERT INTO @CreditDebitAdjustment ( col1, col2,
insertedCreditDebitadJustmentId
表中的ID与InvoiceNum一起插入到@CreditDebitAdjustment
。我该怎么做呢
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
将您的
输出子句
放在插入到
语句的后面,下面是
INSERT INTO TableName (Column1, Column2, Column3.....)
OUTPUT inserted.Column1 , inserted.Column2 INTO @TableName
SELECT Column1, Column2, Column3.....
FROM Table_name
另一方面,我建议您在单独的语句中保留XML分解
和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...
参见示例。下面是我写的一个示例:如果我想使用where子句怎么办?这不起作用:OUTPUT INSERTED.RetailImportOrderID,INSERTED.ErrorMessage WHERE INSERTED.ErrorMessage='未发生任何更改。顺序是100%重复的。'INTO@deletablepoduplicate如果我从上面删除where子句,它会起作用。您不能在输出中使用where子句,如果您想限制应该在select中使用where子句的行数statement@Rj. 或者,一旦通过输出将数据插入到TableName中,就可以在再次从中选择数据时使用where子句。OUTPUT子句不允许使用where子句限制行。