2

OUTPUT 部分までスクロールします。赤い下線が引かれています。InvoiceNum と一緒にInsertedCreditDebitAdjustmentIDs挿入された ID をテーブルに挿入したいと思います。@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 
4

2 に答える 2

6

あなたが何か嘘をついていると言っ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 にハンキーパンキーがあると、多くのクリーニングが必要になる可能性があります :)

シュレッディングを個別に実行して結果を一時テーブルに挿入し、満足したらターゲット テーブルに挿入します。

于 2014-01-13T17:11:38.533 に答える
1

それは行く:

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 句 (Transact-SQL) のドキュメントを参照してください。

于 2014-01-13T17:11:46.380 に答える