开发环境:vs.net2003 c# asp.net oracle92010 水晶报表(vs.net2003自带的)
    在:“查询”页面,点:查询按钮,用:SESSION变量,传给下一个页面:“结果”页面。在::“结果”页面,收到:SESSION变量,调用:一个公共的数据访问类。返回的DATASET,传给水晶报表,显示出来。
    现在的问题是:点查询,一会儿出报表正常,再点相同的地方,条件不变,一会儿报以下错误:在执行之前,必须指定 CommandText。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.InvalidOperationException: 在执行之前,必须指定 CommandText。
源错误: 
行 294:          OracleDataAdapter ad = new OracleDataAdapter(); 
行 295:          ad.SelectCommand =cmd; 
行 296:          ad.Fill(ds); 
行 297:          return ds; 
行 298: }
源文件: c:\inetpub\wwwroot\caea\application\dboperator.cs    行: 296 而这个类中这个地方,其它地方执行,是没有问题的。
请教,这是什么问题?查询oracle存储过程返回DATASET完整的代码是:
public override DataSet exeStoredForDataSet(string strStored,string[] strParams,object[] objValues)
//执行带参数的存储过程语句,返回DataSet 
{
OracleCommand cmd=new OracleCommand(); 
cmd.Connection=this.conn ; 
          if(inTransaction) 
           cmd.Transaction=trans; 
if((strParams!=null)&&(strParams.Length!=objValues.Length)) 
throw new System.Exception("查询参数和值不对应!");
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText=strStored; 
if(strParams!=null) 

for(int i=0;i<strParams.Length;i++) 
cmd.Parameters.Add(strParams[i],objValues[i]);     
OracleParameter parrc=new OracleParameter("P_CURSOR",OracleType.Cursor);
parrc.Direction = ParameterDirection.Output;
cmd.Parameters.Add(parrc);

          DataSet ds = new DataSet(); 
          OracleDataAdapter ad = new OracleDataAdapter(); 
          ad.SelectCommand =cmd; 
          ad.Fill(ds); 
          return ds; 
}
      }