Hi, Experts,
I have a PROCEDURE to open a flat file. The following is code;
v_check_FHandle UTL_FILE.FILE_TYPE;
v_input_dir varchar2(100) :='DEPWORK';
v_input_file varchar2(100);
v_check_stmt VARCHAR2(2000);
v_check_cnt number:=0;
v_check_flag boolean := TRUE;
--------------------------
----------
---------
-- Checking the Existance of the file
--------------------------
----------
---------
begin
BEGIN
v_input_file := 'test_data.out';
v_check_FHandle := utl_file.fopen(v_input_dir
,v_input_f
ile,'R');
utl_file.get_line(v_check_
FHandle, v_check_stmt);
v_check_cnt := v_check_cnt + 1;
utl_file.fclose(v_check_Fh
andle);
IF v_check_cnt > 0 then
v_check_flag := FALSE;
END IF;
EXCEPTION
When NO_DATA_FOUND then
-- the file exists, but has zero bytes
utl_file.fclose(v_check_Fh
andle);
v_check_flag := TRUE;
WHEN utl_file.invalid_mode THEN
RAISE_APPLICATION_ERROR (-20051, 'Invalid Mode Parameter');
WHEN utl_file.invalid_path THEN
RAISE_APPLICATION_ERROR (-20052, 'Invalid File Location');
WHEN utl_file.invalid_filehandl
e THEN
RAISE_APPLICATION_ERROR (-20053, 'Invalid Filehandle');
WHEN utl_file.invalid_operation
THEN
RAISE_APPLICATION_ERROR (-20054, 'Invalid Operation');
WHEN utl_file.read_error THEN
RAISE_APPLICATION_ERROR (-20055, 'Read Error');
WHEN utl_file.internal_error THEN
RAISE_APPLICATION_ERROR (-20057, 'Internal Error');
WHEN utl_file.charsetmismatch THEN
RAISE_APPLICATION_ERROR (-20058, 'Opened With FOPEN_NCHAR
But Later I/O Inconsistent');
WHEN utl_file.file_open THEN
RAISE_APPLICATION_ERROR (-20059, 'File Already Opened');
WHEN utl_file.invalid_maxlinesi
ze THEN
RAISE_APPLICATION_ERROR(-2
0060,'Line
Size Exceeds 32K');
WHEN utl_file.invalid_filename THEN
RAISE_APPLICATION_ERROR (-20061, 'Invalid File Name');
WHEN utl_file.access_denied THEN
RAISE_APPLICATION_ERROR (-20062, 'File Access Denied By');
WHEN utl_file.invalid_offset THEN
RAISE_APPLICATION_ERROR (-20063,'FSEEK Param Less Than 0');
WHEN others THEN
RAISE_APPLICATION_ERROR (-20099, 'Unknown UTL_FILE Error');
end;
BEGIN
-- Open the input file for reading
if v_check_flag then
v_check_FHandle:=UTL_FILE.
FOPEN(v_in
put_dir,v_
input_file
,'R');
end if;
DBMS_OUTPUT.PUT_LINE('File
Opened for read.');
end;
end;
When I run this in sqlplus, I got a error:
PLS-00483: exception 'INVALID_OPERATION' may appear in at most one exception handler in this block
Please help. Thanks!
Start Free Trial