此代码在压缩小文件 (4M) 时工作正常,但在尝试压缩大文件 (1.3G) 时出现数字或值错误。知道我在这里缺少什么吗?管道函数 ListDir 工作正常,所以这不是问题。
DECLARE
dir_name VARCHAR2(50) ;
dir_path VARCHAR2(1024);
ns VARCHAR2(1024) ;
f utl_file.file_type ;
compressed blob ;
data_b bfile ;
compress_rate integer := 9 ;
BEGIN
BEGIN
select directory_name,directory_path
into dir_name,dir_path
from all_directories where directory_name = 'PURGE_ARCH_DIR' ;
EXCEPTION
WHEN no_data_found
THEN
RAISE ;
END ;
FOR each_file IN (SELECT column_value FROM TABLE(ListDir(dir_path)) )
LOOP
IF ( each_file.column_value = '07-22-2015_ccr_records_arc_purged.csv' )
THEN
DBMS_OUTPUT.PUT_LINE(each_file.column_value);
f := UTL_FILE.fopen (dir_name, each_file.column_value || '.gz', 'wb');
data_b := BFILENAME (dir_name,each_file.column_value);
DBMS_LOB.FILEOPEN (data_b, DBMS_LOB.LOB_READONLY);
DBMS_LOB.createtemporary (compressed, false);
compressed := UTL_COMPRESS.lz_compress (data_b,compress_rate);
UTL_FILE.put_raw(f, compressed, true);
UTL_FILE.fclose (f);
DBMS_LOB.FILECLOSE (data_b);
DBMS_LOB.freetemporary (compressed);
END IF ;
END LOOP;
EXCEPTION
WHEN others THEN
RAISE ;
END;
/
错误是:
07-22-2015_ccr_records_arc_purged.csv
ERROR at line 1:
ORA-20001: Error_Stack...
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 36