2016-02-25 96 views
0

我从.zip文件中返回文件名的表(type t_file_list is table of clob;)(以BLOB格式)表函数标题是这样的:如何corectly调用表函数在PL/SQL

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

+0

这是类型:'型t_file_list是CLOB的表;'在包中声明?或者在数据库层面? – krokodilko

+0

它在两个包(在'zip_util_pkg'和包中我需要调用函数'get_file_list')中声明 – Silverrook

回答

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; 
/
+0

谢谢,它真的帮助我:-) – Silverrook