通过 utl_file.open 打开驻留在服务器上的文件时出错!

发布于 2024-10-05 13:30:42 字数 670 浏览 2 评论 0原文

我正在尝试打开驻留在数据库服务器中的文件, 我用过 选择 * 来自 V$ 参数 名称 = 'utl_file_dir' 找出目录路径。

当我执行此代码时,我收到此错误。 出现错误“ORA-29283:无效的文件操作”

declare
    v_file_handler utl_file.file_type;
    p_dir varchar2(100):='/d04/data/edi/inbound';
    v_no  number:=1;
    v_file varchar2(30):='ut_file.txt';
    begin
    if utl_file.is_open(v_file_handler) then 
    dbms_output.put_line('Already opened');
    else
    v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
    utl_file.putf(v_file_handler,'program %s\n',sysdate);
    dbms_output.put_line('not opened');
    end if;
    exception
    when others then
    dbms_output.put_line(sqlerrm);
    end; 

I am trying to open a file residing in data base server ,
i used
SELECT *
FROM V$PARAMETER
WHERE NAME = 'utl_file_dir'
to find out directory path.

When i am executing this code i am getting this error.
error coming "ORA-29283: invalid file operation"

declare
    v_file_handler utl_file.file_type;
    p_dir varchar2(100):='/d04/data/edi/inbound';
    v_no  number:=1;
    v_file varchar2(30):='ut_file.txt';
    begin
    if utl_file.is_open(v_file_handler) then 
    dbms_output.put_line('Already opened');
    else
    v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
    utl_file.putf(v_file_handler,'program %s\n',sysdate);
    dbms_output.put_line('not opened');
    end if;
    exception
    when others then
    dbms_output.put_line(sqlerrm);
    end; 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

探春 2024-10-12 13:30:43
v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
utl_file.putf(v_file_handler,'program %s\n',sysdate);

您正在打开一个文件进行读取并尝试写入。这必然会抛出
错误。

来自 Oracle 文档:

UTL_FILE.FOPEN (
   location     IN VARCHAR2,
   filename     IN VARCHAR2,
   open_mode    IN VARCHAR2,
   max_linesize IN BINARY_INTEGER) 

open_mode Specifies how the file is opened. 
Modes include:  r -- read text

另外,

ORA-29283: 无效的文件操作

原因:尝试读取不存在的文件或目录,或者操作系统拒绝文件或目录访问。

操作:验证文件系统上的文件和目录访问权限,如果正在读取,请验证该文件是否存在。

v_file_handler:= utl_file.fopen(p_dir,v_file,'r');
utl_file.putf(v_file_handler,'program %s\n',sysdate);

You're opening a file for reading and attempting to write to it. That's bound to throw the
error.

From Oracle documentation:

UTL_FILE.FOPEN (
   location     IN VARCHAR2,
   filename     IN VARCHAR2,
   open_mode    IN VARCHAR2,
   max_linesize IN BINARY_INTEGER) 

open_mode Specifies how the file is opened. 
Modes include:  r -- read text

Also,

ORA-29283: invalid file operation

Cause: An attempt was made to read from a file or directory that does not exist, or file or directory access was denied by the operating system.

Action: Verify file and directory access privileges on the file system, and if reading, verify that the file exists.

遥远的她 2024-10-12 13:30:43

utl_file_dir 已弃用 创建目录

utl_file_dir has been deprecated in favour of CREATE DIRECTORY

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文