Я борюсь со следующим кодом:
DECLARE
TOTACID TAB_OF_ID(50);
RES NUMBER;
BEGIN
SELECT DISTINCT ID INTO TOTACID
FROM TABLE_B;
FOR indx IN 1 .. TOTACID.COUNT
LOOP
RES := F_IMPORT(TOTACID(indx));
DBMS_OUTPUT.PUT_LINE ('Moved ID ' || RES);
END LOOP;
END;
/
Когда я его запускаю, происходит сбой с ошибкой:
Сообщение об ошибке -
ORA-06550: строка 2, столбец 11:
PLS-00566: имя типа "TAB_OF_ID" не может быть ограничено
ORA-06550: строка 5, колонка 19:
PL / SQL: ORA-00932: несовместимые типы данных: ожидаемый UDT получил NUMBER
ORA-06550: строка 5, колонка 3:
PL / SQL: оператор SQL игнорируется
06550. 00000 - «строка% s, столбец% s: \ n% s»
* Причина: обычно ошибка компиляции PL / SQL.
* Действие:
Где TAB_OF_ID
было объявлено следующим образом:
create or replace TYPE TAB_OF_ID AS table of NUMBER(19,2);
Я не понимаю, что не так. Кажется, я не могу объявить TOTACID TAB_OF_ID(50)
, но в функции, которую я создал несколько дней назад, я могу объявить LIS_ID TAB_OF_ID := TAB_OF_ID(50);
, и она работает правильно.
В чем разница со сценарием, который у меня здесь?