假设我们有一个任意的存储过程,为了实验的纯粹性,让我们采取一个简单的选择:
CREATE PROCEDURE dbo.GetAnswer
AS
RETURN 42
以及在 C# 中调用它的代码
using(SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "dbo.GetAnswer";
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
}
如何获取返回值?
替换cmd.ExecuteNonQuery();
为cmd.ExecuteScalar();
无济于事,因为。ExecuteScalar
这样的程序返回null
。
答案对我来说一点也不明显。
代码将如下所示:
总的来说,没有什么复杂的,但我最不期望的是添加一个不存在的参数。
另外,我注意到不需要更改存储过程。添加到命令的参数不是过程参数。
存储过程总是返回一些整数值。如果过程中没有带有显式值的 RETURN,则返回 0。