我需要根据索引id_issue从另一个对象dial.det_dial.issues发送部分子对象命名的子句:
dial.det_dial.issues(index).clauses
我有来自两个问题对象的两个索引(1,43)。
第一个索引(1):1(或 id_issue 1)
最后索引 (2): 43 (或 id_issue 43)
这些索引中的每一个都有一组子句:
一个对象子句包含:id_clause,txt_clause,date_clause,...
包含子句的对象:dial -> det_dial -> issues (id_issue) -> 子句(id_clause、txt_clause、date_clause 等)。
类型调用对象。对象拨号包含对象det_dial 对象det_dial包含对象问题 对象问题包含根据问题中的id_issue的对象子句
当我在函数中发送对象dial.det_dial.issues(id_issue).clauses时,我得到这个 Oracle 错误:
ORA-06533 下标超出计数
当循环在进入函数之前获得索引 2( id_issue = 43) 时。
这是代码:
FUNCTION recordobjectdb(messages OUT t_iax_messages)
RETURN NUMBER IS
dial t_vw_dial;
det_dial t_vw_det_dial;
issues t_vw_issues;
BEGIN
IF dial.det_dial.issues IS NOT NULL AND dial.det_dial.issues.COUNT > 0 THEN
FOR i IN dial.det_dial.issues.FIRST .. dial.det_dial.issues.LAST
LOOP
dial.det_dial.issues.EXTEND;
id_issue := dial.det_dial.issues(i).idissue;
nerror := pk_record_data.f_record(id_issue, dial.det_dial.issues(id_issue).clauses, messages);
END LOOP;
END IF;
return nerror;
END recordobjectdb;
我尝试使用 EXTEND 但它不起作用,为什么?
错误是在从对象子句调用中进入函数之前:(dial.det_dial.issues(id_issue).clauses)。
索引1被发送到 pack_record_data.f_record 函数,但是当它被发送时,索引为43的子句得到了错误。索引不是连续的。
情况是索引2(id_issue 43)被捕获,但我猜它没有到达对象中。
有没有办法使用 for 循环或 forall 指令或类似指令遍历每个索引?
PS:对不起我的写作技巧不好,我不会说一口流利的英语。