Какой должна быть минимальная разница между размером переменной readbuffer и max_linesize (указанным в UTL_FILE.FOPEN), чтобы код выполнялся без ошибки ORA-29284.
Например, ниже приведен мой код:
set serveroutput on;
Declare
f UTL_FILE.FILE_TYPE;
r varchar2(1220);
begin
f:= UTL_FILE.FOPEN('XYZ_DIR', 'ABC.txt', 'R',max_linesize => 1222 );
UTL_FILE.GET_LINE(f,r);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(r);
end;
Когда я выполняю вышеупомянутый код, я получаю ошибку ORA-29284. Эта ошибка происходит из-за того, что размер выбранной строки больше размера буфера чтения в контексте этой проблемы.
Мой файл ABC.txt имеет несколько строк, каждая из которых имеет длину 1221 символов. Для этого сценария допустима ошибка 29284. Но когда я урезаю размер строки в файле до 1220 символов, я все равно получаю ту же ошибку. Если я урежу размер отдельной строки в файле до 1218, мой код будет работать правильно.
Я хочу знать причину сбоя моего кода, даже если я обрезаю отдельную строку в файле до 1220 символов (так же, как буфер чтения), и почему я должен обрезать длину строк до 1218 символов?