首页 > 数据库 > mysql教程 > 为什么我的 C# 代码在从存储过程检索返回值时返回空值?

为什么我的 C# 代码在从存储过程检索返回值时返回空值?

Patricia Arquette
发布: 2025-01-05 21:20:43
原创
340 人浏览过

Why is my C# code returning a null value when retrieving a return value from a stored procedure?

对 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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板