用的存储过程中有两个参数,分别是开始日期和结束日期如果日期范围短的就无问题,日期范围大的就老是说"超时时间已到"
我试过在查询分析器中是1分55秒的.
我已经在web.config中设置了这段:
<httpRuntime maxRequestLength="409600" executionTimeout="43200" />但没用.大家帮帮忙.谢谢.

解决方案 »

  1.   

    public DataSet ExcutProc(string sprocName, OracleParameter[] parameters)
        
        {
          
            try
            {
                this.Open();
                cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandText = "PKG_Winner.proc_ywjd";
                cmd.CommandType = CommandType.StoredProcedure;
                         
                cmd.Parameters.Clear();
              
                foreach (OracleParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);            }            da = new OracleDataAdapter(cmd);
                ds= new DataSet();
                da.Fill(ds);
                return (ds);
                
            }        finally
            {
                this.Close();
            }
        } OracleDataAccess oda = new OracleDataAccess();
            DataSet ds;
            OracleParameter[] parameters=new OracleParameter[5];        OracleParameter orderno = new OracleParameter("orderno", OracleType.VarChar);
            orderno.Direction = System.Data.ParameterDirection.Input;
            orderno.Value = this.TextBox2.Text.Trim();
            parameters[0] = orderno;        OracleParameter inputdate = new OracleParameter("inputdate", OracleType.VarChar);
            inputdate.Direction = System.Data.ParameterDirection.Input;
            inputdate.Value = this.TextBox1.Text.Trim();
             parameters[1] = inputdate;
            OracleParameter custnob = new OracleParameter("custnob", OracleType.VarChar);
            custnob.Direction = System.Data.ParameterDirection.Input;
            custnob.Value = this.DropDownList1.Text.Trim().ToString();
            parameters[2] = custnob;        OracleParameter custnoe = new OracleParameter("custnoe", OracleType.VarChar);
            custnoe.Direction = System.Data.ParameterDirection.Input;
            custnoe.Value = this.DropDownList2.Text.Trim().ToString();
            parameters[3] = custnoe;
           
            
            OracleParameter p = new OracleParameter("result1",OracleType.Cursor);
            p.Direction = System.Data.ParameterDirection.Output;
             parameters[4] = p;
                     ds = oda.ExcutProc("PKG_Winner.proc_ywjd", parameters);
      

  2.   

    我是用SqlDataSource1连接数据,GridView显示结果的.
      

  3.   

    这个是存储过程:
    CREATE proc getls
    @startdate varchar(50),
    @enddate varchar(50)
    as
    begin
    declare @a varchar(4000)
    set @a=''
    select @a=@a+',cast(sum(case station_id when '''+ station_id +''' then h_price*h_amount*h_discount else 0 end) as numeric(18,2))'+station_name from db_station_total order by station_id
    exec('select convert(varchar(7),ls_datetime,120)零售月'+@a+' from db_ls_item,db_ls where db_ls_item.ls_id=db_ls.ls_id and h_id in (select h_id from db_product where flag_sales_class=''1'') and ls_datetime between '''+@startdate+' 00:00:00'' and '''+  @enddat
    e +' 23:59:59'' group by convert(varchar(7),ls_datetime,120) order by convert(varchar(7),ls_datetime,120)')
    end
      

  4.   

    <httpRuntime maxRequestLength="409600" executionTimeout="43200" />
    如果是 存储过程 超时 是和 这个没关系的.
    这个是说 发送 页面请求的 超时时间.对于存储过程超时可以 加大sqlcommand的超时时间SqlCommand cmd = new SqlCommand();
    cmd.CommandTimeout = 60; //等待命令执行的时间(以秒为单位)。默认为 30 秒。
      

  5.   

    请教一下,我是用SqlDataSource1连接数据,GridView显示结果的,Default.aspx.vb中没有一行代码,那CommandTimeout在哪里设置呢?
      

  6.   

    请教一下,我是用SqlDataSource1连接数据,GridView显示结果的,Default.aspx.vb中没有一行代码,那CommandTimeout在哪里设置呢?
      

  7.   

    server=bobwang;Uid=sa;password=;database=test;connect timeout=120
      

  8.   

    难道.NET不可以执行较长时间的存储过程吗?就只有3分钟而已,也不算长啊.
      

  9.   

    设置 cmd.CommandTimeout = 这个数设置的大点; 设置0  无限制
      

  10.   

    昏迷……3分钟而已……Web上面一个页面的处理时间超过10就判定为很慢了,超过60秒就有可能导致超时,超过100秒这个网站基本报废……
      

  11.   

    大家听我说啊,我做的是公司web上的查询管理平台,主要显示公司的报表,是公司内部的啊.
      

  12.   

    1.
    3分钟而已
    ___________________
    LZ 喝高了哈, 处于半清醒状态吧~
    默认的 30s 已经相当长了, 超过这个时间,基本是你的代码有问题,或者设计得不合理2.
    如何设置?
    考虑使用 xxxDataSource 的 Selecting, Updating, Deleting, Inserting 事件, 这些时间在相应 Command 执行之前出发, 如 seletingprotected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {
             // e.Command.CommandTimeout = 60;   // 默认 30s 以足够
        }3.
    延长这个时间,必须考虑到所有开发者、所有代码的影响。       
    除非特例,一般的程序而言,这个超时已经相当长了。你的程序应该修改存储过程或者业务逻辑设计,将同步改为异步(不是很多动作都必须立刻完成,真正的事务往往可以颠倒,例如如果你打Taxi没有代够钱,还有很多补救措施,而如果那些必须回到上车地点从头再来的做法在业务设计方面过分技术僵化),或者查询优化等等,提高100倍速度有时很容易,又是候修改业务逻辑会让用户更方便(觉得这产品不是一个计算机脑袋设计出来的,而是懂业务的人设计出来的)。
    ref: http://topic.csdn.net/t/20061005/23/5064092.htmlHope helpful!
      

  13.   

    问题在你的存储过程执行效率太低了,执行是过长,不是程序问题,优化你的存储过程吧!既然是报表,如果没有实时查询需求,可以建立一个数据库job,定期执行这个存储过程得到报表数据保存到一个物理表里面,到时候你的程序去读已经生成好的报表数据不就快得多了么?