这是一个非常简单的问题。我有一个 SP,它在表中插入一行,最后有语句 RETURN @@IDENTITY。我似乎找不到在 C# 中检索此值的方法。我正在使用企业库并使用以下方法:
db.ExecuteNonQuery(cmd);
我试过cmd.Parameters[0].Value来获取值,但它总是返回 0。有任何想法吗?
顺便说一句,在大多数情况下,您应该使用 SCOPE_IDENTITY() 而不是 @@IDENTITY。参考。
Dim c as new sqlcommand("...")
Dim d As New SqlParameter()
d.Direction = ParameterDirection.ReturnValue
c.parameters.add(d)
c.executeNonQuery
(@@IDENTITY) = d.value
它或多或少像这样......要么这样,要么只是从存储过程中返回值作为输出参数。
有一点要提。您应该真正使用 SCOPE_IDENTITY 在 INSERT 之后返回标识值。@@IDENTITY 有可能返回错误的值。特别是在使用 TRIGGERS 时,在 INSERT 之后将值写入其他表。
有关详细信息,请参阅联机丛书页面。
有人说用
IDENT_CURRENT('表名')
http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html
听起来你想用标量值执行
SqlCommand.ExecuteScalar()
正如其他人提到的,我认为使用 SCOPE_IDENTITY() 比 @@IDENTITY 变量更安全