exec STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100');
这是我在oracle里的执行语句,前2个是日期格式的参数,可是提示
ORA-06550: 
第 1 行, 第 24 列: 
PLS-00302: 必须声明 'STAT_GEAR_BOX_LUGDOWN' 组件
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored
我不知道是哪里错了,请高手指点

解决方案 »

  1.   

    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN 
    这个过程是怎么定义的?
      

  2.   

    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN 外部可以调用吗? 看看在包的说明里面是怎么定义的?
      

  3.   

    这是STAT_AND_ANALYSE包下的存储过程
    procedure stat_gear_box_lugdown(v_start_date  in date,             --开始检测时间
                                      v_end_date    in date,             --结束检测时间
                                      v_time_stamp  in varchar2) is 
        arr_lugdown              tbl_lugdown;
        arr_onetimepassed        tbl_total;
        arr_passed               tbl_total;
      begin
        --统计污染物黑烟排放的平均含量, 检测车辆总数
        select --/*+ parallel(ap 4)*/
               a.gear_box_type,
               nvl(round(sum(a.smoke_day_sum)/sum(inspection_count), 2),0),
               sum(a.inspection_count),
               count(distinct a.vehicle_tag_no||a.undercarriage_no)
        bulk collect into arr_lugdown
        from   mv_lugdown_verify_result a
        where  a.inspection_date  >= v_start_date
        and    a.inspection_date  <  v_end_date
        and    a.gear_box_type in (select b.criteria 
                                   from stat_search_criteria b
                                   where id = v_time_stamp)          
        group by a.gear_box_type;
        
        batch_insert_lugdown(arr_lugdown, LUGDOWN_INSPECTION, v_time_stamp);
        
        --统计一次上线检测就能合格的总车辆次数
        select --/*+ parallel(a 4)*/
               a.gear_box_type, 
               count(a.onetime_passed)
        bulk collect into arr_onetimepassed
        from   mv_lugdown_passed   a
        where  a.inspection_date  >= v_start_date
        and    a.inspection_date  <  v_end_date
        and    a.gear_box_type in (select b.criteria 
                                   from stat_search_criteria b
                                   where id = v_time_stamp)     
        and    a.onetime_passed   = 'Y'
        group by a.gear_box_type;
        
        batch_update_onetime_passed(arr_onetimepassed, LUGDOWN_INSPECTION, v_time_stamp);
      
        --总合格车辆数, 拿最后检测为准
        select  --/*+ parallel(ap 4)*/
               ap.gear_box_type, count(*) 
        bulk collect into arr_passed
        from   mv_lugdown_passed  ap,
               (select --/*+ parallel(ap 4)*/
                       max(a.inspection_date) inspection_date, 
                       a.id_vehicle 
                from   mv_lugdown_passed a
                where  a.inspection_date  >= v_start_date
                and  a.inspection_date  <  v_end_date
                and    a.gear_box_type in (select b.criteria 
                                           from stat_search_criteria b
                                           where id = v_time_stamp)                    
                group by a.id_vehicle) ab
        where ap.id_vehicle       = ab.id_vehicle
        and   ap.inspection_date  = ab.inspection_date
        and   ap.passed           = 'Y'
        group by ap.gear_box_type;
        
        --更新本统计条件中临时表的检测合格的车辆总数
        batch_update_passed(arr_passed, LUGDOWN_INSPECTION, v_time_stamp);  
      end;
      

  4.   

    exec STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100')
    直接这样子执行?
      

  5.   

    procedure stat_gear_box_lugdown 这样看是public的
    看一下你package说明里面是不是忘了说明这个过程了
      

  6.   

    exec STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100'); 
    这个在sqlplus里可以,但在pl/sql里,不需要用execbegin
     STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100'); 
    end;
      

  7.   

    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100'); 
      

  8.   

    select * from user_objects
    where object_NAME = 'stat_gear_box_lugdown';
    看看有几条再看看status即可了解。
      

  9.   

    直接用包名调用里面的存储过程,别用exec试试。
    还有这个存储过程是忘了说明了
      

  10.   

    bulk collect into 怎么用  什么意思
      

  11.   

    查看包的定义,看看是否有类似下面的声名:
    procedure stat_gear_box_lugdown(v_start_date  in date,            --开始检测时间 
                                      v_end_date    in date,            --结束检测时间 
                                      v_time_stamp  in varchar2);