首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • oracle 存储过程的执行
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 10:23:34 楼主
    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


    我不知道是哪里错了,请高手指点
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 10:33:411楼 得分:0
    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN
    这个过程是怎么定义的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 10:34:132楼 得分:0
    你的存储过程贴来看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 10:35:363楼 得分:0
    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN 外部可以调用吗? 看看在包的说明里面是怎么定义的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kokobox
    • 等级:
    发表于:2008-07-22 10:37:044楼 得分:0
    把存储过程贴出来给大家看看,可能解决会快点

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 10:37:445楼 得分:0
    这是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;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 11:22:336楼 得分:0
    exec STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100')
    直接这样子执行?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 11:26:037楼 得分:0
    procedure stat_gear_box_lugdown 这样看是public的
    看一下你package说明里面是不是忘了说明这个过程了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 11:30:458楼 得分:0
    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里,不需要用exec

    begin
    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;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dutguoyi
    • 等级:
    发表于:2008-07-22 11:47:569楼 得分:0
    STAT_AND_ANALYSE.STAT_GEAR_BOX_LUGDOWN (TO_DATE('2000-01-01','YYYY-MM-DD'),TO_DATE('2008-01-01','YYYY-MM-DD'),'100');
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 13:13:3610楼 得分:0
    引用 7 楼 lynx 的回复:
    procedure stat_gear_box_lugdown 这样看是public的
    看一下你package说明里面是不是忘了说明这个过程了


    赞同这个!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 15:44:3211楼 得分:0
    引用 10 楼 njhart2003 的回复:
    引用 7 楼 lynx 的回复:
    procedure stat_gear_box_lugdown 这样看是public的
    看一下你package说明里面是不是忘了说明这个过程了


    赞同这个!

    select * from user_objects
    where object_NAME = 'stat_gear_box_lugdown';
    看看有几条再看看status即可了解。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-22 21:52:4712楼 得分:0
    直接用包名调用里面的存储过程,别用exec试试。
    还有这个存储过程是忘了说明了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-23 16:33:0013楼 得分:0
    bulk collect into 怎么用  什么意思
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-07-23 23:57:0414楼 得分:0
    查看包的定义,看看是否有类似下面的声名:
    procedure stat_gear_box_lugdown(v_start_date  in date,            --开始检测时间
                                      v_end_date    in date,            --结束检测时间
                                      v_time_stamp  in varchar2);

    引用 7 楼 lynx 的回复:
    procedure stat_gear_box_lugdown 这样看是public的
    看一下你package说明里面是不是忘了说明这个过程了
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved