是否可以在SQL参数化查询中包含多个OUTPUT关键字?

时间:2013-11-15 01:18:41

标签: c# sql sql-server parameterized-query

我正在构建一个通用参数化查询(INSERT或UPDATE),我正在使用插入列的参数(在INSERT查询中)和更新列的参数以及where子句列(在UPDATE查询中)

在任何一种情况下,我还允许指定由我的方法返回的列名,并完成我使用OUTPUT INSERTED.ColumnName。此列可能是表的主键,但也可能是其他内容。

现在,在执行INSERT或UPDATE之后,我想获取刚刚插入或更新的行的键。我怎样才能做到这一点?我可以做OUTPUT INSERTED.ColumnName, SCOPE_IDENTITY()之类的事情吗?

注意:如果重要,这不是存储过程。

1 个答案:

答案 0 :(得分:1)

当然可以。看起来有点像这样:

DECLARE @result TABLE (
    ID INT,
    SomeColumn NVARCHAR(100)
)

INSERT SomeTable ( SomeColumn )
OUTPUT SCOPE_IDENTITY(), INSERTED.SomeColumn 
INTO   @result
VALUES ( 'Foo' ),
       ( 'Bar' )

SELECT * FROM @result

这将输出:

ID | SomeColumn
---------------
 1 | 'Foo'
 2 | 'Bar'