procedure GetKKLine
  is 
    upkkbh varchar(20);
    downkkbh varchar(20);
    upkkfx varchar(2);
    downkkfx varchar(2);
    jl number;
  begin
    declare
      CURSOR CUR_kktable IS
      select kkmc1,fxbh1,kkmc2,fxbh2,jl from
        vehsur_relation
      order by bh;
    begin
      OPEN CUR_kktable;
      LOOP
        FETCH CUR_kktable INTO upkkbh,upkkfx,downkkbh,downkkfx,jl;
        EXIT WHEN CUR_kktable%NOTFOUND;
        execute savedata(upkkbh,upkkfx,downkkbh,downkkfx,jl)
        /*如果一次执行savedata的时间需要5分钟,那么用游标执行这段可会出现什么问题?*/
      END LOOP;
      CLOSE CUR_kktable;  
    end;
  end;

解决方案 »

  1.   

    没有任何锁表的操作
    如果游标循环了20次 就执行了20次savedata,因为执行1次savedata需要5分钟。我就怕会崩溃。
      

  2.   

    execute savedata(upkkbh,upkkfx,downkkbh,downkkfx,jl)
    这个为何要那么长的时间?
      

  3.   

    select kkmc1,fxbh1,kkmc2,fxbh2,jl from
            vehsur_relation
          order by bh;
    这个查询出的数据要是很多的话,你的过程怎么办?看看savedata(upkkbh,upkkfx,downkkbh,downkkfx,jl) 这个能不能处理一下
      

  4.   

    savedata(upkkbh,upkkfx,downkkbh,downkkfx,jl)已经精简了 执行1次最少5分钟执行完毕
    select kkmc1,fxbh1,kkmc2,fxbh2,jl from 
            vehsur_relation 
          order by bh; 数据量大概有200多  也就是需要200多次循环