在C#中检索RETURN @@ IDENTITY的值

时间:2008-10-29 10:19:26

标签: c# .net ado.net

这是一个非常简单的问题。我有一个SP,在表中插入一行,最后是语句RETURN @@ IDENTITY。我似乎无法找到的是一种在C#中检索此值的方法。我正在使用企业库并使用以下方法:

db.ExecuteNonQuery(cmd);

我已尝试 cmd.Parameters [0] .Value 来获取值,但始终返回0。有什么想法吗?

5 个答案:

答案 0 :(得分:5)

在大多数情况下,你应该使用SCOPE_IDENTITY()而不是@@ IDENTITY。 Ref

答案 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)

答案 4 :(得分:0)

听起来像你想要用标量值执行

SqlCommand.ExecuteScalar()

正如其他人所说,我认为使用SCOPE_IDENTITY()比@@ IDENTITY变量更安全