存储过程返回多个数据集的调用方式

以前很少用到,今天突然有一个存储过程返回的是两个数据集,我原来的执行方式如下:
public   static  DataView RetrunProc( string  Proc_Name,SqlParameter[] Para)
        
dot.gif {
            
int i;    
            SqlConnection myCn 
= new SqlConnection(strConn);            
            SqlDataAdapter MyCmd 
= new SqlDataAdapter(Proc_Name,myCn);
            
try
            
dot.gif{
                myCn.Open();
                MyCmd.SelectCommand.CommandType
=CommandType.StoredProcedure;
                
for(i=0;i<Para.Length;i++)
                
dot.gif{
                    MyCmd.SelectCommand.Parameters.Add(Para[i]);

                }

                DataSet Myds 
= new DataSet();        
            
                MyCmd.Fill(Myds,
"table");
                
return Myds.Tables["table"].DefaultView;
            }

            
catch(System.Data.SqlClient.SqlException e)
            
dot.gif{                
                
throw new Exception(e.Message);
            }

            
finally
            
dot.gif{
                MyCmd.Dispose();
                myCn.Close();
            }

        }
这样是没有办法得到第二个数据集的,修改如下
/**/ /// 
        
/// 调用存储过程并报回DataSet
        
/// 

        
/// 
        
/// 
        
/// 

         public   static  DataSet RunProcForSet( string  Proc_Name,SqlParameter[] Para)
        
dot.gif {
            
int i;    
            SqlConnection myCn 
= new SqlConnection(strConn);            
            SqlDataAdapter MyCmd 
= new SqlDataAdapter(Proc_Name,myCn);
            
try
            
dot.gif{
                myCn.Open();
                MyCmd.SelectCommand.CommandType
=CommandType.StoredProcedure;
                
for(i=0;i<Para.Length;i++)
                
dot.gif{
                    MyCmd.SelectCommand.Parameters.Add(Para[i]);
                }

                DataSet Myds 
= new DataSet();        
            
                MyCmd.Fill(Myds);
                
return Myds;
            }

            
catch(System.Data.SqlClient.SqlException e)
            
dot.gif{                
                
throw new Exception(e.Message);
            }

            
finally
            
dot.gif{
                MyCmd.Dispose();
                myCn.Close();
            }

        }

这样就可以通过MyDs.Tables[0],MyDs.Tables[1]等方式访问返回的多个数据集了.
另外,还有一种通过Adapter的方式,我没有测试.
不过,目前有另外一种需求不知道如何解决,就是在存储过程中的print的内容,程序中有没有办法接收到呢?

转载于:https://www.cnblogs.com/wwhuzhen/archive/2005/11/24/283461.html

你可能感兴趣的:(存储过程返回多个数据集的调用方式)