Как вызвать табличную функцию в PL/SQL
У меня есть табличная функция, которая возвращает таблицу имен файлов (type t_file_list is table of clob;
) из файла.zip (в формате BLOB) заголовок выглядит так:
function get_file_list(
p_zipped_blob in blob
,p_encoding in varchar2 := null
)
return t_file_list
is
.....
end;
и мне нужно выбрать эти имена файлов и для каждого вызова какую-то процедуру, но я не могу найти способ вызвать function get_file_list
правильно, я пытаюсь это:
for i in (select * from table(zip_util_pkg.get_file_list(ab_zipped_blob)))
loop
.....
end loop;
но это дает мне некоторые ошибки, такие как ORA-22905 и PLS-00642. Может кто-нибудь сказать мне, что я делаю неправильно и как правильно вызывать табличную функцию?
1 ответ
Решение
Нет необходимости использовать SQL - вы можете сделать это полностью на PL/SQL:
DECLARE
p_files ZIP_UTIL_PKG.T_FILE_LIST;
BEGIN
p_files := zip_util_pkg.get_file_list(ab_zipped_blob);
FOR i IN 1 .. p_files.COUNT LOOP
some_procedure( p_files(i) );
END LOOP;
END;
/