gpt4 book ai didi

oracle - Utl_file fseek 函数给出具有较大绝对偏移量的错误?

转载 作者:行者123 更新时间:2023-12-03 05:08:59 26 4
gpt4 key购买 nike

我必须编写一个程序,使用 fseek 从特定位置读取数据。我必须逐行读取数据,并且在特定行中我必须使用 fseek 来读取数据。但是当我使用fseek并且absolute_offset很大(比文件大小小一点)时,它会给出这个错误

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"

但是使用较小的absolute_offset值(例如4000范围)可以正常工作并选择数据。第 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;

最佳答案

我在我的环境中运行了这个并且也弹出了这个。奇怪的是,如果我在 FOPEN 上指定最大行长度,它似乎可以正常工作。

lv_utl := UTL_FILE.FOPEN('/d04/data/edi/inbound','POO0001.dat','R');

不起作用,但是

lv_utl := UTL_FILE.FOPEN('/d04/data/edi/inbound','POO0001.dat','R',5000);

工作完美。我对此没有任何理由,但它确实看起来像一个错误。

作为解决方法,您可能想尝试使用 BFILE 来尝试 DBMS_LOB 包。

关于oracle - Utl_file fseek 函数给出具有较大绝对偏移量的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com