下面是网上的一个存储过程的代码:/// <summary>
  /// 创建一个SqlCommand对象以此来执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <param name="prams">存储过程所需参数</param>
  /// <returns>返回SqlCommand对象</returns>
  private SqlCommand CreateCommand(string procName, SqlParameter[] prams) 
  {
   // 确认打开连接
   Open();   
   SqlCommand cmd = new SqlCommand(procName, con);
   cmd.CommandType = CommandType.StoredProcedure;   // 依次把参数传入存储过程
   if (prams != null) 
   {
    foreach (SqlParameter parameter in prams)
     cmd.Parameters.Add(parameter);
   }
   
   // 加入返回参数
   cmd.Parameters.Add(
    new SqlParameter("ReturnValue", SqlDbType.Int, 4,
    ParameterDirection.ReturnValue, false, 0, 0,
    string.Empty, DataRowVersion.Default, null));   return cmd;
  }就是后面那个"加入返回参数",这个有什么用?一般情况下哪种情况会用到?能否举个简单的例子说明一下这个的用法?因为我看到有的存储过程又没有这个东西
而且上面是返回一个SqlCommand的对象,就更不理解了

解决方案 »

  1.   

    cmd.CommandType = CommandType.StoredProcedure;
    说明它是调用存储过程的
    比如一个存储过程需要返回给调用者各种结果
    for example 
    成功、失败、异常etc
    调用者就可以根据不同的返回结果做不同处理
      

  2.   


    存储过程的输出参数是可选的。
    ado.net调用存储过程最终需要有sqlcommand.ExecNoneQuery 之类的方法来执行
      

  3.   

    这些我都理解,就是上面返回的是SqlCommand的对象,这就让我犯迷糊了
      

  4.   

    SqlCommand类做为一个返回值有什么意义?应该我的问题就在于此
      

  5.   

    封装生成SqlCommand的代码而已 这样重复用的话就不需要用一次 为SqlCommand设置一下存储过程名称和参数以及参数值
      

  6.   

    这是为了考虑到代码的重用,这个类会跟据调用者提供的参数来动态创建一个command对象,然后调者可以直接执行这个command可以将结果存入dataset或datareader等等。