Это аналог табличных функций DB2, но без указания списка столбцов.
например. что-то вроде этого:
create function do_some_stuff() returns table( <column_list> )
language sql
begin atomic
return
select t.* from some_table t;
end@
без спецификации <column_list>
.
Такие функции могут возвращать таблицу с различным набором полей в зависимости от переданных параметров и внутренней логики.
В большинстве случаев этот тип результата функции используется для возврата результатов на сторону клиента.
Объявление типа на основе REF_CURSOR - единственный способ сделать это в Oracle 8, но, начиная с Oracle 9i, есть встроенный тип sys_refcursor (например, см. здесь ).
Поскольку объявление является слабым типом, а у DB2 (насколько я знаю) нет аналога для sys_refcursor, автоматическое преобразование не может решить, как преобразовать такие объявления.
Единственный способ преобразовать его - это просмотреть хранимую процедуру и вручную восстановить набор полей, возвращаемых курсором. Затем вы можете переписать декларацию Oracle с помощью строго типизированного курсора и обработать ее с помощью MTK. Или вручную переписать логику на стороне DB2 ...
Обновление:
- DB2 поддерживает слабые курсоры.
- Решения для проблем совместимости миграции, описанные в книге IBM, доступны здесь (ВНИМАНИЕ: .PDF файл около 3,18 МБ). ищите строку "ref_cursor" здесь.