create or replace package body pkg_nkw_hfs timestamp '2006-07-07:10:10:10' is ------------------------------------------------------------------ -- 2006 DataPRO Developers - m@urelio ------------------------------------------------------------------ -- Version: 2.0.2 ------------------------------------------------------------------ -- Collections, Records, Variables, Constants, Exceptions, Cursors ------------------------------------------------------------------ gv_handle utl_file.file_type; ------------------------------------------------------------------ ----------------------- Private Section -------------------------- ------------------------------------------------------------------ ------------------------------------------------------------------ -- CLOSE_FILE ------------------------------------------------------------------ procedure close_file is begin if (utl_file.is_open(gv_handle)) then utl_file.fclose(gv_handle); end if; exception when others then raise; end close_file; ------------------------------------------------------------------ ------------------------ Public Section -------------------------- ------------------------------------------------------------------ ------------------------------------------------------------------ -- FAPPEND ------------------------------------------------------------------ procedure fappend(ft_string in gt_string%TYPE, fv_file in gv_file%TYPE := gv_file, fv_path in gv_path%TYPE := gv_path, fv_lines in gv_lines%TYPE := gv_lines, fv_bytes in gv_bytes%TYPE := gv_bytes) is lv_sumbytes number; i binary_integer; begin begin gv_handle := utl_file.fopen(fv_path, fv_file, 'A'); exception when utl_file.invalid_path then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Invalid Path)'; raise ge_hfs; when utl_file.invalid_mode then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Invalid Mode)'; raise ge_hfs; when utl_file.invalid_operation then close_file; begin gv_handle := utl_file.fopen(fv_path, fv_file, 'W'); exception when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Recursive Write Failure)'; raise ge_hfs; end; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Others)'; raise ge_hfs; end; begin i := ft_string.first; << append_loop >> while (i is not null) loop begin utl_file.put_line(gv_handle, ft_string(i)); exception when utl_file.invalid_filehandle then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Invalid FileHandle)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Invalid Operation)'; raise ge_hfs; when utl_file.write_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Write Error)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Others)'; raise ge_hfs; end; lv_sumbytes := nvl(lv_sumbytes,0) + length(ft_string(i)); exit append_loop when (lv_sumbytes > fv_bytes); exit append_loop when (i > fv_lines); i := ft_string.next(i); end loop append_loop; end; begin close_file; end; exception when others then raise; end fappend; ------------------------------------------------------------------ procedure fappend(fv_buffer in gv_buffer%TYPE, fv_file in gv_file%TYPE := gv_file, fv_path in gv_path%TYPE := gv_path) is begin begin gv_handle := utl_file.fopen(fv_path, fv_file, 'A'); exception when utl_file.invalid_path then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Invalid Path)'; raise ge_hfs; when utl_file.invalid_mode then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Invalid Mode)'; raise ge_hfs; when utl_file.invalid_operation then close_file; begin gv_handle := utl_file.fopen(fv_path, fv_file, 'W'); exception when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Recursive Write Failure)'; raise ge_hfs; end; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.Open(Others)'; raise ge_hfs; end; begin utl_file.put(gv_handle, fv_buffer); exception when utl_file.invalid_filehandle then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Invalid FileHandle)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Invalid Operation)'; raise ge_hfs; when utl_file.write_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Write Error)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FAPPEND.PutLine(Others)'; raise ge_hfs; end; begin close_file; end; exception when others then raise; end fappend; ------------------------------------------------------------------ -- FWRITE ------------------------------------------------------------------ procedure fwrite(ft_string in gt_string%TYPE, fv_file in gv_file%TYPE := gv_file, fv_path in gv_path%TYPE := gv_path, fv_lines in gv_lines%TYPE := gv_lines, fv_bytes in gv_bytes%TYPE := gv_bytes) is lv_sumbytes number; i binary_integer; begin begin gv_handle := utl_file.fopen(fv_path, fv_file, 'W'); exception when utl_file.invalid_path then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Path)'; raise ge_hfs; when utl_file.invalid_mode then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Mode)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Operation)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Others)'; raise ge_hfs; end; begin i := ft_string.first; << write_loop >> while (i is not null) loop begin utl_file.put_line(gv_handle, ft_string(i)); exception when utl_file.invalid_filehandle then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Invalid FileHandle)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Invalid Operation)'; raise ge_hfs; when utl_file.write_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Write Error)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Others)'; raise ge_hfs; end; lv_sumbytes := nvl(lv_sumbytes,0) + length(ft_string(i)); exit write_loop when (lv_sumbytes > fv_bytes); exit write_loop when (i > fv_lines); i := ft_string.next(i); end loop write_loop; end; begin close_file; end; exception when others then raise; end fwrite; ------------------------------------------------------------------ procedure fwrite(fv_buffer in gv_buffer%TYPE, fv_file in gv_file%TYPE := gv_file, fv_path in gv_path%TYPE := gv_path) is begin begin gv_handle := utl_file.fopen(fv_path, fv_file, 'W'); exception when utl_file.invalid_path then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Path)'; raise ge_hfs; when utl_file.invalid_mode then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Mode)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Invalid Operation)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.Open(Others)'; raise ge_hfs; end; begin utl_file.put(gv_handle, fv_buffer); exception when utl_file.invalid_filehandle then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Invalid FileHandle)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Invalid Operation)'; raise ge_hfs; when utl_file.write_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Write Error)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FWRITE.PutLine(Others)'; raise ge_hfs; end; begin close_file; end; exception when others then raise; end fwrite; ------------------------------------------------------------------ -- FREAD ------------------------------------------------------------------ procedure fread(fv_file in gv_file%TYPE := gv_file, fv_path in gv_path%TYPE := gv_path, fv_lines in gv_lines%TYPE := gv_lines, fv_bytes in gv_bytes%TYPE := gv_bytes, ft_string out gt_string%TYPE) is lv_done boolean := (FALSE); lv_string gv_string%TYPE; i binary_integer := 1; lv_sumbytes number; begin begin gv_handle := utl_file.fopen(fv_path, fv_file, 'R'); exception when utl_file.invalid_path then close_file; gv_message := 'PKG_NKW_HFS.FREAD.Open(Invalid Path)'; raise ge_hfs; when utl_file.invalid_mode then close_file; gv_message := 'PKG_NKW_HFS.FREAD.Open(Invalid Mode)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FREAD.Open(Invalid Operation)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FREAD.Open(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FREAD.Open(Others)'; raise ge_hfs; end; << read_loop >> loop begin utl_file.get_line(gv_handle, lv_string); exception when no_data_found then close_file; exit read_loop; when value_error then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Value Error)'; raise ge_hfs; when utl_file.invalid_filehandle then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Invalid FileHandle)'; raise ge_hfs; when utl_file.invalid_operation then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Invalid Operation)'; raise ge_hfs; when utl_file.read_error then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Read Error)'; raise ge_hfs; when utl_file.internal_error then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Internal Error)'; raise ge_hfs; when others then close_file; gv_message := 'PKG_NKW_HFS.FREAD.GetLine(Others)'; raise ge_hfs; end; ft_string(i) := lv_string; i := nvl(i,0) + 1; lv_sumbytes := nvl(lv_sumbytes,0) + length(lv_string); exit read_loop when (lv_sumbytes > fv_bytes); exit read_loop when (i > fv_lines); end loop read_loop; begin close_file; end; exception when others then raise; end fread; end pkg_nkw_hfs; / show errors