Can you use cmd.ExecuteScalar when the sproc uses RETURN @value(sproc 使用 RETURN @value 时可以使用 cmd.ExecuteScalar)
问题描述
你会用吗
int blah = Convert.ToInt32(cmd.ExecuteScalar());
当 sproc 的最后一条语句执行时:
When the sproc's last statement does:
RETURN @value
只有这样,我才能让它工作:
I can only get it to work if it does:
选择@值
另外,这给了我一个对象空异常:
Also, this gives me a object null exception:
int blah = (int)cmd.ExecuteScalar();
convert.toint32 和 (int) 不是同一个东西,但一个是另一个的包装器?
isn't convert.toint32 and (int) the same thing but one is a wrapper of the other?
推荐答案
不,你不能.ExecuteScalar() 方法设计为在结果集中返回单个值.基本上第一行第一列的值就返回了.
No, you cannot. The ExecuteScalar() method is designed to return as single value that is returned in a result set. Basically, the value in the first column of the first row returned.
要获得返回值,您需要向您的 SQLCommand 对象添加一个参数.在创建参数对象时使用名称@RETURN_VALUE"并指定返回的参数方向.然后,您可以使用 ExecuteNonQuery() 方法.
To get the return value, you need to add a parameter to your SQLCommand object. Use the name "@RETURN_VALUE" and specify a parameter direction of Return when creating the parameter object. You can then use the ExecuteNonQuery() method.
我必须注意,IMO,存储过程的返回值应该简单地表明过程的状态.所有数据都应通过结果集或输出参数返回.
I must note that IMO, stored procedure return values should simply indicate the status of the procedure. All data should be returned through result sets or output parameters.
这篇关于sproc 使用 RETURN @value 时可以使用 cmd.ExecuteScalar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:sproc 使用 RETURN @value 时可以使用 cmd.ExecuteScalar
基础教程推荐
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- c# Math.Sqrt 实现 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- SSE 浮点算术是否可重现? 2022-01-01
- 将 XML 转换为通用列表 2022-01-01