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
我不知道是哪里错了,请高手指点
这是我在oracle里的执行语句,前2个是日期格式的参数,可是提示
ORA-06550:
第 1 行, 第 24 列:
PLS-00302: 必须声明 'STAT_GEAR_BOX_LUGDOWN' 组件
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
我不知道是哪里错了,请高手指点
解决方案 »
- How to migrate R12 from AIX5.3 64位系统 to LinuxAS 464位系统
- Oracle
- oracle 并行测试
- oracle 登录问题,还请大家赐教!
- 谁有oracle8.05的下载地址,100分相求。。。
- 有没有数据库文档的自动生成工具?求数据库文档生成器1。3注册吗!立刻给分
- 高手告诉我TRUNC (date)和ROUND (date)的用法和区别吧谢谢了
- dbms_sql问题!谢谢!
- 出现错误:ORA-01033: ORACLE initialization or shutdown in progress
- rman全备进行dataguard重建备库
- 要用Group By的话,在Select语句中就要用分组函数吗(例如sum(*) ¦max(*))!
- 对表更新后,分批提交的问题,急,在线等
这个过程是怎么定义的?
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;
直接这样子执行?
看一下你package说明里面是不是忘了说明这个过程了
这个在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;
where object_NAME = 'stat_gear_box_lugdown';
看看有几条再看看status即可了解。
还有这个存储过程是忘了说明了
procedure stat_gear_box_lugdown(v_start_date in date, --开始检测时间
v_end_date in date, --结束检测时间
v_time_stamp in varchar2);