c# - 当 sproc 使用 RETURN @value 时,你可以使用 cmd.ExecuteScalar

标签 c# ado.net executescalar

你会用吗

int blah = Convert.ToInt32(cmd.ExecuteScalar());

当 sproc 的最后一条语句执行时:

RETURN @value

只有当它运行时,我才能让它运行:

选择@值

此外,这给了我一个对象空异常:

int blah = (int)cmd.ExecuteScalar();

convert.toint32 和 (int) 不是同一件事,而是一个是另一个的包装器吗?

最佳答案

不,你不能。 ExecuteScalar() 方法旨在作为结果集中返回的单个值返回。基本上,返回第一行第一列中的值。

要获得返回值,您需要向 SQLCommand 对象添加一个参数。使用名称“@RETURN_VALUE”并在创建参数对象时指定返回的参数方向。然后,您可以使用 ExecuteNonQuery() 方法。

我必须注意,IMO,存储过程的返回值应该简单地指示过程的状态。所有数据应通过结果集或输出参数返回。

关于c# - 当 sproc 使用 RETURN @value 时,你可以使用 cmd.ExecuteScalar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/520735/

相关文章:

sql - ADO.NET 的库可以将 .csv 文件中的数据快速批量插入到数据库中?

c# - Int32.TryParse() 或 (int?)command.ExecuteScalar()

c# - ExecuteScalar 返回 0 执行存储过程

C#:使用 FileSystemWatcher 监视文件的更改

c# - 通过套接字将 C# 结构发送到 C++

c# - 使用 ReSharper 按类型然后按名称对成员进行排序

c# - 防止多次调用事件方法(锁定)

c# - 选择数据表的某些列

sql-server - 从 SQL Server 中的 XML 类型列读取 ADO.net 中的 XML 的最有效方法?

c# - 从数据库返回 List<int>