这是一个非常简单的问题。我有一个SP,在表中插入一行,最后是语句RETURN @@ IDENTITY。我似乎无法找到的是一种在C#中检索此值的方法。我正在使用企业库并使用以下方法:
db.ExecuteNonQuery(cmd);
我已尝试 cmd.Parameters [0] .Value 来获取值,但始终返回0。有什么想法吗?
答案 0 :(得分:5)
答案 1 :(得分:4)
Dim c as new sqlcommand("...")
Dim d As New SqlParameter()
d.Direction = ParameterDirection.ReturnValue
c.parameters.add(d)
c.executeNonQuery
(@@IDENTITY) = d.value
或多或少是这样的......或者只是将存储过程中的值作为输出参数返回。
答案 2 :(得分:2)
有一点需要提及。在INSERT之后,您应该使用SCOPE_IDENTITY返回标识值。 @@ IDENTITY可能会返回错误的值。特别是如果正在使用TRIGGERS,则在INSERT之后将值写入其他表。
有关详细信息,请参阅Books Online页面。
答案 3 :(得分:1)
有人说使用
IDENT_CURRENT( '表名')
http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html
-Zubair http://zubairdotnet.blogspot.com
答案 4 :(得分:0)
听起来像你想要用标量值执行
SqlCommand.ExecuteScalar()
正如其他人所说,我认为使用SCOPE_IDENTITY()比@@ IDENTITY变量更安全