Сколько должна быть минимальная разница в размере между readbuffer и max_linesize при использовании UTL_FILE в SQL - PullRequest
0 голосов
/ 24 апреля 2019

Какой должна быть минимальная разница между размером переменной 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 символов?

...