Как избежать ошибки «ORA-06533 Subscript over count» при отправке объекта типа в качестве параметра функции пакета PL / SQL в функцию для l oop? - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно отправить часть подобъекта с именем пункты из другого объекта dial.det_dial.issues в соответствии с index id_issue :

   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 -> эмитент (id_issue) -> предложения (id_clause, txt_clause, date_clause и т. д. c).

Типы объектов вызова. Объект набор содержит объект det_dial Объект det_dial содержит объект выдает объект выдает содержит объект пункты в соответствии с id_issue из выдает

Когда я отправляю объект dial.det_dial.issues (id_issue) .clauses в функции я получаю это Oracle ошибка:

ORA-06533 Подстрочный индекс за пределами счета

Когда l oop получает индекс 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) перехвачен, но он не достигнут в объекте, я полагаю.

Есть ли путь к go по каждому индексу, используя инструкцию для l oop или полностью или аналогично?

PS: Извините, мои плохие навыки письма, я плохо говорю по-английски sh.

...