Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLServer中使用输出将多列插入表中?_Sql_Sql Server_Output Clause - Fatal编程技术网

如何在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子句限制行。