У меня есть две схемы: A и B (Oracle 9). В A есть dblink для B. В B есть пакет, который я вызываю из A. Процедуры в пакете B могут возвращать результаты с различным количеством, и я думаю, что возврат коллекции - лучший способ по этой причине. *
create type B.tr_rad as object (
name varchar2(64)
,code number
,vendor number
,val varchar2(255)
,num number
);
create type B.tt_rad as varray(256) of B.tr_rad;
Но из схемы я не могу использовать тип tt_rad, потому что использование SQL-типов с помощью dblink не поддерживается. DBMS_SQL не поддерживается курсорами. Создать типы с одинаковым OID невозможно.
Я думаю использовать временные таблицы. Но, во-первых, это не так хорошо (после того, как удаленная функция возвращает значение, вызывающая сторона должна выбрать коллекцию из удаленной таблицы). И есть опасения замедления работы с временными таблицами.
Может, кто знает альтернативное взаимодействие?