插入 SQL Server 时从另一个表输出字段

Use*_*291 5 sql t-sql sql-server stored-procedures

我有一个表@p2作为参数发送到一个名为 id 的存储过程IdObjectSubTypeTemp,我需要插入一个表ObjectSubType并输出带有参数表 id 的标识,如下所示:

INSERT INTO [dbo].[ObjectSubType]
    ([IdObject]
    ,[IdSubType])
OUTPUT inserted.[IdObjectSubType] ,OS.[IdObjectSubTypeTemp]
INTO @IdObjectSubTypeTbl
SELECT OS.[IdObject] 
    ,OS.[IdSubType]
FROM @p2 OS
Run Code Online (Sandbox Code Playgroud)

但我不断得到这样的信息:

无法绑定多部分标识符“OS.IdObjectSubTypeTemp”。

虽然我在更新时做了同样的事情并且它正在工作但在插入时它不起作用

Rhy*_*nes 2

OUTPUT 子句在INSERT 语句中使用时不支持引用 from_table_name - 仔细阅读文档,它不是很清楚,也请参阅注释。

您可以使用 OUTPUT 子句捕获插入的新标识值。[IdObjectSubType],然后单独查询 INSERT [IdObjectSubType] 和 [IdObjectSubTypeTemp] INTO @IdObjectSubTypeTbl。