对 C# 中的存储过程的返回值检索进行故障排除
尝试从 C# 中的存储过程检索返回值时,您可以遇到返回值为空的问题。以下是问题的详细说明和解决方案:
问题描述:
您定义了一个 Transact-SQL 存储过程,该过程采用两个参数:@a 作为输入和 @b 作为输出。存储过程将 @b 设置为查询结果,并且您希望在 C# 代码中检索 @b 的值。但是,当您执行存储过程并尝试读取返回值时,您会得到 null。
代码片段:
SqlConnection SqlConn = ...; SqlCommand sqlcomm = new SqlCommand("Validate", SqlConn); sqlcomm.CommandType = CommandType.StoredProcedure; sqlcomm.Parameters.Add("...", SqlDbType.VarChar, ParameterDirection.Input); SqlParameter retval = sqlcomm.Parameters.Add("...", SqlDbType.VarChar); retval.Direction = ParameterDirection.ReturnValue; sqlcomm.ExecuteNonQuery(); // MISSING string retunvalue = (string)sqlcomm.Parameters["..."].Value;
逻辑错误:
C# 例程中缺少的代码是 ExecuteNonQuery 调用。执行存储过程会启动数据库查询并更新输出参数@b。如果没有这个调用,存储过程将不会运行,并且返回值保持不变。
解决方案:
在检索返回值之前包含 ExecuteNonQuery 方法:
sqlcomm.ExecuteNonQuery(); string retunvalue = (string)sqlcomm.Parameters["..."].Value;
进行此更改后,您的代码将正确检索分配给存储中的 @b 的返回值程序。
以上是为什么我的 C# 代码在从存储过程检索返回值时返回空值?的详细内容。更多信息请关注PHP中文网其他相关文章!