0

我需要根据索引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:对不起我的写作技巧不好,我不会说一口流利的英语。

4

0 回答 0