ORA-22160 并非是稀梳数组引起来的

ORA-22160:  element at index [1] does not exist

 

昨天调了过程 搞了好久才找到原因.

procedure stat_month_to_tmp

 cursor  cur_state_month_tmp is
        select
        id as order_id,
        provinceid,
        areaid
        typeid,
        info_id,
        o.code,
        ordername,

from ....

 

begin

open cur_state_month_tmp;
    loop
      fetch cur_state_month_tmp bulk collect into
            l_ary_ID,
            l_ary_PROVINCEID,

            l_ary_TYPEID,
            l_ary_INFO_ID,
            l_ary_CODE,
            l_ary_ORDERNAME;

  l_rowcnt:=l_ary_ID.count;
      l_rowcnt:=l_ary_ID(1);
      forall x in 1..l_ary_ID.count
      merge into  delv_order_stat_mid using dual
       on (id =l_ary_id(x))
       when matched then
             update set
             complettime                   =l_ary_complettime(x),
             mail_succ_send           =mail_succ_send+l_ary_mail_succ_send (x),
             sms_succ_send          =sms_succ_send+l_ary_sms_succ_send (x),
             error                                 =l_ary_error (x),
             TASKSTATUS                 =L_ARY_TASKSTATUS(x),

when not matched then

 insert into oss_delv_order_stat_mid
          (
            id,
            provinceid,
            areaid,
            typeid,
            info_id,
            code,
            ordername,
            insert_time,
            modfiy_time
                   
          )
          values(
            l_ary_id  (i),
            l_ary_provinceid  (i),

           l_ary_areaid  (i),
            l_ary_typeid  (i),
            l_ary_info_id  (i),
            l_ary_code  (i),
            l_ary_ordername  (i),
            sysdate,
            sysdate
          );

 

run at merge into  delv_order_stat_mid using dual  report eror!!!

ORA-22160:  element at index [1] does not exist

  l_rowcnt:=l_ary_ID.count;
  l_rowcnt:=l_ary_ID(1);

都有数据啊 !

后来 好久 好久才发现 多了个 l_ary_areaid(i) 这个在搜集当中没有    fetch cur_state_month_tmp bulk collect into

          values(
            l_ary_id  (i),
            l_ary_provinceid  (i),

           l_ary_areaid  (i),

 

 

我在收集加上去报 l_ary_ORDERNAME; 类型错误!  反复对照 游标和表的类型,还有核对列数....

 

后来后来 把游标里的SQL 拿到查询窗口运行 然后复制列名 用ULTRAEDIT 开两个文本 发现 查询出来的少了1列

  areaid
没有逗号 查询语句把它给忽略掉. 语法不检查,太怪了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ORA-01547表示数据文件在备份或恢复期间发生了丢失或损坏。这个错误通常会导致数据库无法启动或无法访问特定的数据文件。要解决这个问题,需要找到数据文件的备份,并将其恢复到数据库,以修复丢失或损坏的数据文件。 ORA-01152表示无法在数据库找到要恢复的数据文件。这个错误通常发生在尝试恢复一个不存在的数据文件时。解决这个问题的方法是检查数据库的控制文件和日志文件,确保它们包含了正确的数据文件信息。如果需要,可以手动编辑控制文件的数据文件列表,然后重新尝试恢复操作。 ORA-01110表示打开数据库时遇到了错误。这个错误通常发生在数据库启动过程,可能与数据文件丢失、控制文件损坏或其他数据库文件问题有关。解决这个问题的方法是检查数据库的错误日志和跟踪文件,找到导致错误的原因,并按照相应的解决方案来修复该问题。这可能涉及到恢复备份的数据文件、修复损坏的控制文件或执行其他相关的数据库维护操作。 综上所述,ORA-01547、ORA-01152和ORA-01110都是与数据库文件相关的错误。要解决这些错误,需要找到原因,并采取适当的措施来修复或恢复相关的文件。这些错误可能会导致数据库无法启动或无法访问特定的数据文件,因此修复这些错误对于数据库的正常运行非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值