根据Microsoft的OUTPUT Clause文档,你可以在OUTPUT子句的列名中使用from_table_name。有两个示例可以参考:在UPDATE语句中使用带有from_table_name的OUTPUT INTO和在DELETE语句中使用带有from_table_name的OUTPUT INTO。
那么,在INSERT语句中是否也可以使用呢?
那么,在INSERT语句中是否也可以使用呢?
INSERT INTO T ( [Name] )
OUTPUT S.Code, inserted.Id INTO @TMP -- The multi-part identifier "S.Code" could not be bound.
SELECT [Name] FROM S;
使用表变量导致失败的示例
-- A table to insert into.
DECLARE @Item TABLE (
[Id] [int] IDENTITY(1,1),
[Name] varchar(100)
);
-- A table variable to store inserted Ids and related Codes
DECLARE @T TABLE (
Code varchar(10),
ItemId int
);
-- Insert some new items
WITH S ([Name], Code) AS (
SELECT 'First', 'foo'
UNION ALL SELECT 'Second', 'bar'
-- Etc.
)
INSERT INTO @Item ( [Name] )
OUTPUT S.Code, inserted.Id INTO @T -- The multi-part identifier "S.Code" could not be bound.
SELECT [Name] FROM S;