0

我已经创建了表

create table AA(
    id int ,
    name varchar(20),
    sname varchar(20)
)

现在我正在插入一个新值并获取插入的行 ID:

declare @InsID table (InId int)
insert into AA (name, sname)select 1, 'John', 'Rock'
output inserted.id into @output
Select * from @InsID

但它向我显示错误:消息 102,级别 15,状态 1,第 3 行“插入”附近的语法不正确。有谁知道似乎是什么问题?

4

2 回答 2

3
declare @InsID table (InId int)

insert into AA (name, sname)
output inserted.id into @InsID
select 'John', 'Rock'

Select * from @InsID
于 2012-04-25T10:27:38.080 回答
1

假设表中的 ID 列定义为标识列,则:

SELECT SCOPE_IDENTITY()

有关更多信息,请参阅本文:http: //blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

如果您真的想使用该OUTPUT子句,则您的语法是错误的。输出必须紧跟在表格之后,在值之前:

declare @InsID table (InId int)

insert into AA (name, sname)
output inserted.id into @InsID 
select 'John', 'Rock'

Select * from @InsID

有关每个示例,请参见此处

于 2012-04-25T10:21:52.403 回答