필자는 pirticular 위치에서 데이터를 읽는 fseek를 사용할 프로그램을 만들어야합니다. 필자는 라인 단위로 데이터를 읽어야하고, pirticular 라인에서는 fseek를 사용하여 데이터를 읽어야합니다. 하지만 난 fseek과 및 absolute_offset을 사용하고 때 큰 크기이다는 (파일 크기가 적은 다음 조금),이 오류 Utl_file fseek 함수가 큰 절대 오프셋으로 오류를 내고 있습니까?
ORA-29284: file read error
ORA-06512: at "SYS.UTL_FILE", line 219
ORA-06512: at "SYS.UTL_FILE", line 1145
ORA-06512: at line 15"
하지만 4000 범위 같은 작은 absolute_offset 값이 제대로 픽 데이터를 작동과
을 제공합니다. 라인 번호 15 여기서 fseek는 오류를 발생시킵니다.DECLARE
lv_utl UTL_FILE.FILE_TYPE;
v_buff VARCHAR2(2000);
l_exists boolean;
l_block VARCHAR2(2000);
l_file_length number;
v_line varchar2(5000);
BEGIN
UTL_FILE.fgetattr('/d04/data/edi/inbound','POO0001.dat',l_exists,l_file_length,l_block);
lv_utl := UTL_FILE.FOPEN('/d04/data/edi/inbound','POO0001.dat','R');
--utl_file.get_line(lv_utl,v_line,50);
--dbms_output.put_line(v_line);
--l_file_length:=length();
dbms_output.put_line(l_file_length);
utl_file.fseek(lv_utl,1261061);
utl_file.get_line(lv_utl,v_buff,100);
dbms_output.put_line(v_buff);
--lv_msg_txt := 'empno ename job manager hiredate commission salary department_no';
--UTL_FILE.PUT_LINE(lv_utl,lv_msg_txt);
--UTL_FILE.PUT_LINE(lv_utl,'------------------------------------------------------------------------------------');
--UTL_FILE.PUT_LINE(lv_utl,' ');
--UTL_FILE.FCLOSE(lv_utl);
END;
"ls"출력과 일치하는 정확한 file_length가 반환됩니까? –