如何在 PL/SQL 中正确调用 table 函数

how to corectly call table function in PL/SQL

我有 table 函数,其中 returns table 来自 .zip 文件(BLOB 格式)的文件名 (type t_file_list is table of clob;) header 是喜欢:

  function get_file_list(
    p_zipped_blob in blob
   ,p_encoding in varchar2 := null
  )
    return t_file_list
  is
  .....
  end;

我需要 select 这些文件名,并且每个文件名都调用一些过程,但我找不到正确调用 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。谁能告诉我我做错了什么以及如何正确调用 table 函数?

无需使用 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;
/