如何在 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;
/
我有 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;
/