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
没有逗号 查询语句把它给忽略掉. 语法不检查,太怪了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值