自己测试了下ReturnValue不需要设置为第一个参数啊

tiandiyuzhou1 2011-03-23 09:19:24
ADO.net中ReturnValue
在网上看到好多博客说ReturnValue必须设置为第一个参数
可是我测试了下,把他最后一个添加进去也可以啊,是不是网上误人子弟?
代码如下
alter proc CeshiReturnValue
(
@name varchar(50),
@age int
)as
declare @sql int
set @sql = (select count(1) from Ceshi where [name]=@name and age=@age)
if(@sql=0)
return 100
else
return 200

    protected void Button3_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "CeshiReturnValue";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = "tt";
cmd.Parameters.Add("@age", SqlDbType.Int, 4).Value = 23;
cmd.Parameters.Add("ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
Response.Write(cmd.Parameters["ReturnValue"].Value);
}
}
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiandiyuzhou1 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vrhero 的回复:]
因为...

引用 MSDN:
在对 OleDbCommand 或 OdbcCommand 使用参数时,向 Parameters 集合中添加参数的顺序必须与存储过程中所定义的参数顺序相匹配。OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序将存储过程中的参数视为占位符,并且将按顺序应用这些参数值。另外,返回值参数必须是添加到 Pa……
[/Quote]谢谢螃蟹老大,原来是这样,mssql就不必设置为第一个参数!
我就是被网上毒害的= =!悲剧
请问螃蟹老大,你在MSDN输入什么关键字找到的?我输入ADO.net ReturnValue没讲解到这些!
vrhero 2011-03-23
  • 打赏
  • 举报
回复
因为...
[Quote=引用 MSDN:]
在对 OleDbCommand 或 OdbcCommand 使用参数时,向 Parameters 集合中添加参数的顺序必须与存储过程中所定义的参数顺序相匹配。OLE DB .NET Framework 数据提供程序和 ODBC .NET Framework 数据提供程序将存储过程中的参数视为占位符,并且将按顺序应用这些参数值。另外,返回值参数必须是添加到 Parameters 集合中的第一批参数。[/Quote]
前提是“在对 OleDbCommand 或 OdbcCommand 使用参数时”...

对于明确支持命名参数的provider,没有这种限制...

ps:网上文章良莠不齐,断章取义的多了...有疑问的地方应该去看MSDN官方解释...
Rock870210 2011-03-23
  • 打赏
  • 举报
回复

public static void RunProcedure(string strConnStr, string strSqlText, SqlParameter[] paras, out int ret)
{
ret = -1;
try
{
SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = strConnStr;
sqlConn.Open();
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.CommandText = strSqlText;
sqlCmd.Parameters.Clear();
sqlCmd.Parameters.AddRange(paras);
SqlParameter retValue = new SqlParameter();
retValue.Direction = ParameterDirection.ReturnValue;
sqlCmd.Parameters.Add(retValue);

sqlCmd.ExecuteNonQuery();
ret = (int)retValue.Value;
sqlConn.Close();

}
catch (Exception ex)
{
throw ex;
}
}
Rock870210 2011-03-23
  • 打赏
  • 举报
回复
既然 已经测出来没有必要,楼主你又何必再如此纠结呢?
tiandiyuzhou1 2011-03-23
  • 打赏
  • 举报
回复
我测试了下,都可以正常返回100或200啊

大家给个标准啊!不然寝食难安啊
tiandiyuzhou1 2011-03-23
  • 打赏
  • 举报
回复
拿这篇文章看http://www.cnblogs.com/lanting/archive/2005/07/14/193046.html
里面就说到对于 ReturnValue 参数,它必须是列表中的第一个参数
可是我没设置为第一个参数也可以啊,还是我理解错了?
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而性能高,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv5使用ultralytics/yolov5,在Windows系统上做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 希望学习Ubuntu上演示的同学,请前往 《YOLOv5(PyTorch)实战:训练自己的数据集(Ubuntu)》课程链接:https://edu.csdn.net/course/detail/30793  本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793Windows系统 https://edu.csdn.net/course/detail/30923《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284       

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧