怎样执行存储过程,返回一个记录集和一个返回值

怎样执行存储过程,返回一个记录集和一个返回值?

楼主zyaln(人与人的差距咋就这么大呢!)2004-12-17 08:59:36 在 .NET技术 / C# 提问

比如  
  CREATE   PROCEDURE     aaaa  
  (  
  @ret   int   OUTPUT  
  )  
    AS  
  select   *   from   table1  
  set   @ret=0  
   
   
  GO  
  怎么同时取到select的结果和@ret的返回值呢  
  高手支招! 问题点数:50、回复次数:10Top

1 楼sdenli(史丹力)回复于 2004-12-17 09:07:13 得分 0

Int   aa=sqlcomm.excutenoquy()  
  aa就是你的@RET了Top

2 楼wangyingbobj2911(不帅)回复于 2004-12-17 09:19:41 得分 0

CREATE   PROCEDURE     aaaa  
  (  
  @ret   int   OUTPUT  
  )  
    AS  
  select   *,@ret=0   from   table1  
   
  GO  
   
  把表多加一列  
  Top

3 楼flyskywlh(~.NET 2% 一场雨~)回复于 2004-12-17 09:28:20 得分 0

declare   @ret   int  
  set   @ret=0  
  select   *,@ret   as   ret   from   t_oa_planTop

4 楼kuya(yaya工作室)回复于 2004-12-17 09:36:05 得分 10

CREATE   PROCEDURE     aaaa  
  (  
  @ret   int   OUTPUT  
  )  
    AS  
  select   *   from   table1  
  set   @ret=0  
  GO  
   
  declare   int   @yourret  
  exec   aaaa   @ret   =   @yourret   output  
  参数值@yourret   就是你要的@ret值,我exec返回值就是你的select   *   from   table1结果集Top

5 楼wangxt(海贝)回复于 2004-12-17 09:36:16 得分 0

帮你顶Top

6 楼saucer(思归)回复于 2004-12-17 09:36:36 得分 30

try   something   like   the   following,   note,   you   have   to   close   Reader   first  
   
  cmd   =   new   SqlCommand("aaaa",conn);  
  cmd.CommandType   =   CommandType.StoredProcedure;  
  cmd.Parameters.Add("@ret",   SqlDbType.Int);  
  cmd.Parameters["@ret"].Direction   =   ParameterDirection.Output;  
   
  SqlDataReader   reader   =   cmd.ExecuteReader();  
  while   (reader.Read())  
  {  
      //  
  }  
   
  reader.Close();  
   
  int   ret   =   (int)cmd.Parameters["@ret"].Value;Top

7 楼Ivony()回复于 2004-12-17 09:39:53 得分 3

也可以直接用RETURN   0。但是在执行的时候要采取一些措施,声明一个变量来捕获返回值。Top

8 楼51106354(大头)回复于 2004-12-17 11:21:52 得分 5

如果你已经有了存储过程,那么将很好写代码  
  cmd.CommandText   =   "EXECUTE   存储过程名称   @EmployeeID,@ZhiWu   OUTPUT";//@员工编号为要传入的参数.  
  cmd.Parameters.Add("@EmployeeID",   SqlDbType.Int).Value   =   User;  
  cmd.Parameters["@ZhiWu"].Direction   =   ParameterDirection.Output;  
  cmd.ExecuteNonQuery();  
  string   ID   =   (string)selectCmd.Parameters["@ZhiWu"].Value;  
  这样就可以得到职务  
  如果返回的是多行数据,则  
  SqlDataReader   reader   =   cmd.ExecuteReader();  
  ArrayList   al   =   new   ArrayList();  
  while   (reader.Read())  
  {  
      al.Add(reader.GetValue(0).ToString());//获取第一列中的值  
  }  
  reader.Close();  
   
  Top

9 楼kong19(DayDayUp)回复于 2004-12-17 13:01:55 得分 0

markTop

10 楼iamsoloist(Soloist)回复于 2004-12-17 13:35:47 得分 2

按    saucer(思归)     的没错。  
  如果你是使用sqlhelper的话,你仔细看一下你使用的方法的说明。

原文地址:https://www.cnblogs.com/QDuck/p/587856.html