Я только что обнаружил у Oracle ANYDATA
и ANYTYPE
и подумал, что было бы полезно обобщить какой-нибудь очень повторяющийся код, который у меня есть. Я попробовал очень простой пример кода, который выглядит следующим образом:
declare
--simple test query
cursor myCurs is
select sysdate from dual;
type t_arr is table of myCurs%rowtype;
v_arr t_arr;
v_anydata ANYDATA;
begin
open myCurs;
fetch myCurs bulk collect into v_arr;
close myCurs;
dbms_output.put_line(v_arr.count || ' records');
v_anydata := ANYDATA.convertCollection(v_arr);
dbms_output.put_line(anydata.gettypename(v_anydata));
end;
/
Запуск этого кода выдает ошибку «ORA-22370: неправильное использование метода ORA-22370, неправильное использование метода ConvertCollection» (Да, на самом деле оно повторяется ORA-22370
).
Мой вопрос: возможно ли использовать ANYDATA для коллекций типов строк? Я спрашиваю об этом, потому что все примеры, которые я видел для ANYDATA (до сих пор) с коллекциями, используют типы объектов, ни один не использует типы строк, но я не видел ничего (пока), который явно говорит, что типы строк не могут использоваться.
Моя цель состояла в том, чтобы очистить некоторый очень повторяющийся код массового сбора / вставки, который делает одно и то же снова и снова, но с разными курсорами для разных таблиц.
(Oracle 10g)