兰亭一序

每天有美女看,有饭吃,幸福ing......

  博客园 :: 首页 ::  ::  :: 订阅 订阅 :: 管理 ::
  20 随笔 :: 0 文章 :: 42 评论 :: 0 引用

公告

用了这么长时间的.NET了,竟然连怎么获取存储过程的返回值都不知道,真是失败。

在网上搜了一下,就知道怎么用了。

Input 此参数只用于将信息从应用程序传输到存储过程。
InputOutput 此参数可将信息从应用程序传输到存储过程,并将信息从存储过程传输回应用程序。
Output 此参数只用于将信息从存储过程传输回应用程序。
ReturnValue 此参数表示存储过程的返回值。SQL Server 的存储过程参数列表中不显示该参数。它只与存储过程的 RETURN 语句中的值相关联。

  存储过程为主键生成新值后,通常使用存储过程中的 RETURN 语句返回该值,因此用来访问该值的参数类型是 ReturnValue 参数。

  ReturnValue 参数与其他类型的参数有一个重要的区别。通常,在 ADO.NET 中为 Command 对象配置的参数的顺序并不重要。参数名称只用来与存储过程中相应的参数相匹配。但是,对于 ReturnValue 参数,它必须是列表中的第一个参数。

  也就是说,为 Command 对象配置 ReturnValue 参数时,必须首先在代码中配置该参数,这样它才能获取集合中的第一个数字索引。如果先配置任何其他参数,ReturnValue 参数将不能正常工作。

  呵呵,这样就可以了

 

args[0= new SqlParameter("@RETURN_VALUE", SqlDbType.Int );
args[
0].Direction = ParameterDirection.ReturnValue;

取回值的时候用args[0].Value.ToString()

用它来做什么呢,已经想好了。在自定义数据分页时,要想获取总记录数有些麻烦,我是先填充DataSet,取到总记录数,然后清空它,再填充分页后的数据。(不知高手是怎么做的)现在打算在存储过程中获取数据集时,顺便用 return @@rowcount把数据集的行数取到手,就省了一步了。

posted on 2005-07-14 21:55 兰亭 阅读(1077) 评论(7) 编辑 收藏