CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

请问:.net中使用带有output参数存储过程返回数据集,好像不能用dataset接收到?

楼主spoky(夜游魂)2005-08-04 19:58:47 在 .NET技术 / ASP.NET 提问

一个存储过程既需要返回output参数,又需要返回select   *   的一个数据集,那么该如何写才能实现呢?我在写的时候发现如果存储过程中有output参数和有select   *   语句时时就无法正常取到值,而只是其中一样的话则可以成功赋值给变量或者dataset。  
   
  另外,如果一个存储过程中有多个select语句,那么返回来的是不是最后的select语句,还是全部都返回呢?如果全部返回,应该如何使用dataset接收?谢谢!!  
  问题点数:50、回复次数:10Top

1 楼xjspa(天涯)回复于 2005-08-04 20:19:33 得分 5

create   proc   p_test  
  @x   int   output  
  as  
      select   @x=x   from   tb_x  
      select   *   from   tb_y  
   
  SqlCommand   cmd=new   SqlCommand("p_temp");  
  SqlParameter   para=new   SqlParameter();  
  para.ParameterName="@x";  
  para.Direction=ParameterDirection.Output;  
  para.DbType=SqlDbType.Int;  
  cmd.Parameters.Add(para);  
  DataSet   dst=new   DataSet();  
  SqlDataAdapter   adpt=new   SqlDataAdapter(cmd,con);  
  adpt.Fill(dst);  
  //get   output   Paramerter   value  
  string   x=para.Value;Top

2 楼zhilunchen(他山居士)回复于 2005-08-04 21:08:57 得分 5

不用这样,存储可以返回多个结果集,调用取得返回dataset后,用dataset.Tables[0],dataset.Tables[1],...分别获取结果集。Top

3 楼Happy2046(雪山飞狐)回复于 2005-08-04 21:18:55 得分 5

xjspa(天涯)     说得对Top

4 楼ChengKing((.net: http://blog.csdn.net/ChengKing ))回复于 2005-08-04 21:36:14 得分 5

不是dataset接受到结果值,是定义的那个命令参数   变量.Value会接受到Top

5 楼gaofeng2000(高老师)回复于 2005-08-04 22:52:06 得分 5

zhilunchen(他山居士)   的回答应该是楼猪想要的Top

6 楼btut2004(养鱼炒股)回复于 2005-09-15 21:16:15 得分 5

table[x]或nextdatasetTop

7 楼toin((材娃))回复于 2005-09-15 21:27:11 得分 5

不用这样,存储可以返回多个结果集,调用取得返回dataset后,用dataset.Tables[0],dataset.Tables[1],...分别获取结果集。  
  正确啊!多少个都没有问题的  
  Top

8 楼aspczlover(你的骄傲...)回复于 2005-11-29 12:13:25 得分 5

一个存储过程既需要返回output参数,又需要返回select   *   的一个数据集,那么该如何写才能实现呢?  
  =============================================================================    
  如果一个存储过程中有多个select语句  
  结果集可用dataset.Tables[0],dataset.Tables[1]获得  
   
  返回值和output参数的获取和上面不一样   可这样实现      
   
  SqlCommand   sampleCMD   =   new   SqlCommand("SampleProc",   nwindConn);  
  sampleCMD.CommandType   =   CommandType.StoredProcedure;  
   
  SqlParameter   sampParm   =   sampleCMD.Parameters.Add("RETURN_VALUE",   SqlDbType.Int);  
  sampParm.Direction   =   ParameterDirection.ReturnValue;  
   
  sampParm   =   sampleCMD.Parameters.Add("@InputParm",   SqlDbType.NVarChar,   12);  
  sampParm.Value   =   "Sample   Value";  
   
  sampParm   =   sampleCMD.Parameters.Add("@OutputParm",   SqlDbType.NVarChar,   28);  
  sampParm.Direction   =   ParameterDirection.Output;  
   
  nwindConn.Open();  
   
  SqlDataReader   sampReader   =   sampleCMD.ExecuteReader();  
   
  Console.WriteLine("{0},   {1}",   sampReader.GetName(0),   sampReader.GetName(1));  
   
  while   (sampReader.Read())  
  {  
      Console.WriteLine("{0},   {1}",   sampReader.GetInt32(0),   sampReader.GetString(1));  
  }  
   
  sampReader.Close();  
  nwindConn.Close();  
   
  Console.WriteLine("   @OutputParm:   {0}",   sampleCMD.Parameters["@OutputParm"].Value);  
  Console.WriteLine("RETURN_VALUE:   {0}",   sampleCMD.Parameters["RETURN_VALUE"].Value);  
   
  vb版也有   详情见   :   http://www.7xm.net/info/14955.html  
  Top

9 楼xuwenzhuo(约定好了!我们会撑着那把油纸伞风雨同路、不分不离、吃到老玩到老。)回复于 2005-11-29 12:29:01 得分 5

废话!因为它是参数,所以最好用SqlDataParameterTop

10 楼singlepine(小山)回复于 2005-11-29 13:03:03 得分 5

http://singlepine.cnblogs.com/articles/281425.html  
   
  这里面有个完整的例子  
  public   static   DataSet   GetList(int   page_num,int   row_in_page,string   order_column,string   comb_condition,ref   int   output)  
  {                          
                          string   sql="tp_Fetch_List";  
                          System.Data.SqlClient.SqlParameter[]   p=new   SqlParameter[5];  
                           
                          p[0]=new   SqlParameter();  
                          p[0].ParameterName   ="@page_num";  
                          p[0].Value   =page_num;  
                          p[0].DbType=System.Data.DbType.Int32;  
   
                          p[1]=new   SqlParameter();  
                          p[1].ParameterName   ="@row_in_page";  
                          p[1].Value   =row_in_page;  
                          p[1].DbType=System.Data.DbType.Int32;  
   
                          p[2]=new   SqlParameter();  
                          p[2].ParameterName   ="@order_column";  
                          p[2].Value   =order_column;  
                          p[2].DbType=System.Data.DbType.String;  
   
                          p[3]=new   SqlParameter();  
                          p[3].ParameterName   ="@row_total";  
                          p[3].Direction=System.Data.ParameterDirection.Output;  
                          p[3].DbType=System.Data.DbType.Int32;  
   
                          p[4]=new   SqlParameter();  
                          p[4].ParameterName   ="@comb_condition";  
                          p[4].Value   =comb_condition;  
                          p[4].DbType=System.Data.DbType.String;  
                          DataSet   ds=ExecSPDataSet(sql,p);  
                          if   (p[3].Value!=DBNull.Value     &&   p[3].Value.ToString()!=string.Empty   )  
                                  output=Convert.ToInt32(p[3].Value);  
                          return   ds;                                  
  }  
  Top

相关问题

  • 获取存储过程output参数
  • 怎么将带参数的存储过程结果导入dataset ?
  • 在C#中如何利用存储过程返回dataset??假设这个存储过程有一个参数
  • 怎么得到存储过程output参数的返回值?ADO
  • 求救,存储过程OUTPUT参数问题!!!
  • 在存储过程中,给output 参数传值 ,新手,请帮忙
  • C#中调用SQL Server存储过程(带output参数)的问题
  • C#中调用SQL Server存储过程(带output参数)的问题
  • 在pb里面怎么调用sqlserver的带output参数的存储过程
  • 写好了存储过程在VB中如何调用 output参数

关键词

  • .net
  • 存储过程
  • 语句
  • 数据
  • samplecmd
  • sampparm
  • sampreader
  • 参数
  • 返回
  • dbtype

得分解答快速导航

  • 帖主:spoky
  • xjspa
  • zhilunchen
  • Happy2046
  • ChengKing
  • gaofeng2000
  • btut2004
  • toin
  • aspczlover
  • xuwenzhuo
  • singlepine

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo