5

我有一个存储过程,它返回一个字符串值,我必须使用ExecuteNonQuery语句执行这个 SP。当我执行这个时,我得到 -1 作为返回值。

我从来没用过SET NOCOUNT ON。我怎样才能得到返回值?我没有将返回值声明为OUTPUT——只是SELECT @VARIABLENAME。如何使用 获得价值ExecuteNonQuery

4

2 回答 2

8

ExecuteNonQuery用于执行只返回受影响的行数的查询(尽管可以填充输出参数)。-1表示没有行受到影响或您已设置 nocount。

如果您需要从存储过程中读取数据,请使用另一个 API 调用。

于 2012-07-16T08:27:15.987 回答
1

如果您只获取一个值,如果您使用 .Net 语言,我会使用 ExecuteScalar 命令。我知道Java等有一个等价物。

http://msdn.microsoft.com/en-us/ibrary/system.data.sqlclient.sqlcommand.executescalar.aspx

如果您的 SP 中有输出参数,则 ExecuteNonQuery 可以获得返回数据。这篇文章解释了如何。

http://msdn.microsoft.com/en-us/library/80x06z3b(v=VS.71).aspx

不过,如果您只是返回一个字符串 ExecuteScalar 更易于使用。

于 2012-07-16T15:02:36.697 回答