ExecuteNonQuery返回-1

时间:2012-07-16 06:20:59

标签: sql-server sql-server-2008 sql ado.net

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

我从未使用SET NOCOUNT ON。我如何获得返回值?我没有将返回值声明为OUTPUT - 只是SELECT @VARIABLENAME。如何使用ExecuteNonQuery获取价值?

2 个答案:

答案 0 :(得分:7)

ExecuteNonQuery用于执行查询that return only the number of rows affected(尽管可以填充输出参数)。 -1表示没有行受到影响或您已设置了nocount。

如果需要从sproc中读取数据,请使用另一个API调用。

答案 1 :(得分:1)

如果你只是抓取一个值,我会使用ExecuteScalar命令,如果你在.Net Langauge。我知道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更容易使用。