PKG_NKW_HFS.SPB
Source Package Body
Interface p/ UTL_FILE.
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;
|