Как вызвать табличную функцию в 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;
/
Другие вопросы по тегам