0

我有一个表函数,它从 .zip 文件(BLOB 格式)返回文件名表(type t_file_list is table of clob;),标题如下:

  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。有人能告诉我我做错了什么以及如何正确调用表函数吗?

4

1 回答 1

3

无需使用 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;
/
于 2016-02-25T20:20:43.863 回答