2016-02-25 30 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