重新执行创建存储过程的语句
"create or replace procedure(或function)......"看是否有编译错

解决方案 »

  1.   

    可能是过程有问题,重新在sql plus 里创建过程。
    看是否创建成功。
    如果有编译错误,用 show err 可查看是什么错误。
      

  2.   

    你的procedure处于不可用状态,必须从新编译使其初一valid状态方可使用
      

  3.   

    帮我看看错在哪儿呀,请教啦。
    CREATE or replace PROCEDURE TEST1
      AS
      cursor cur_carID(p_province varchar2) Is
      select distinct carid
        from businfo where province=p_province;  cursor cur_speed(p_carID varchar2) Is
      Select speed,latalona
        From vi_exception_drive
        where carid=p_carid
       Order by carid;  w_err_count number(3):=0;
      w_count     number(3):=0;
      w_speed number(3):=0;
      w_area_value number(3):=0;
      w_latalona number(20):=0;
      s_error_value  number(3):=0;Begin
    for s_province in select ratediff,province from exception_drive order by province loop
      
      s_error_value:=s_province.ratediff;   --get the ratediff value
      for w_carID in cur_carID(s_province.province) loop    open cur_speed(w_carID.carid);
        
        loop    
        fetch cur_speed into w_speed,w_latalona;
        select averagespeed into w_area_value from areainfo where areaid=w_latalona;         if cur_speed%notfound then
            if w_err_count > 0 then
              insert into exceptiondrive_log values (w_carID.carID,w_err_count,sysdate,s_province);
            end if;
            exit;
          end if;      if abs(w_area_value-w_speed) >= s_error_value then
            w_count:= w_count + 1;
          else
            w_count:= 0;
          end if;      if w_count = 3 then
            w_err_count := w_err_count + 1;
            w_count := 0;
          end if;
          
        end loop;  end loop;
    end loop;
    end;
      

  4.   

    连这个过程都有编译错误,为何?
    CREATE or replace PROCEDURE TEST1
    is 
    david varchar2;
    Begin
    DBMS.OUTPUT.PUT_LINE('david test');
    end;
      

  5.   

    建议去弄一个PL/SQL Developer,该工具会帮你定位过程出错在那里,很好用。
    http:\\[email protected] for s_province in (select ratediff,province from exception_drive order by province) loop
    在你的select 语句两端加上括号看看。  
      

  6.   

    输出应该这样:
    DBMS_OUTPUT.PUT_LINE('david test');
    上面的过程是你写的吗?有些变量没有定义吧
    用show error察看错误信息,有些错误自己可以看出来
      

  7.   

    用show error察看错误,把问题解决了,谢谢啊