在 Oracle DB 21c XE 中读取网络共享驱动器中的文件时,路径或文件不存在?

问题描述 投票:0回答:1

我有一个网络公共驱动器,每个人都可以读写,这是我运行 Windows 10 的电脑。我的 Oracle 实例在我的笔记本电脑上运行,即 Windows 11,我已将网络驱动器安装为我的笔记本电脑中的 Z 驱动器,并且我我能够访问和编辑驱动器内的文件。

文件位于

Z:/test.txt

CREATE OR REPLACE DIRECTORY NETTEST AS 'Z:';
- 用于创建目录对象并授予读写权限。

SET SERVEROUTPUT ON;
DECLARE
    f1 UTL_FILE.FILE_TYPE;
    s  VARCHAR2(32767);
BEGIN
    f1 := UTL_FILE.FOPEN('NETTEST', 'test.txt', 'r');
    LOOP
        BEGIN
            UTL_FILE.GET_LINE(f1, s);
            DBMS_OUTPUT.PUT_LINE(s);
        EXCEPTION
            WHEN NO_DATA_FOUND THEN
                EXIT;
        END;
    END LOOP;
    UTL_FILE.FCLOSE(f1);
END;
/

上面的 PLSQL 代码用于读取文本文件内的数据。但我不断收到此错误。

Error report -
ORA-29283: invalid file operation: nonexistent file or path [29434]
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at line 5
29283. 00000 -  "invalid file operation%s"
*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.

帮我解决这个问题。预先感谢。

oracle plsql fopen plsqldeveloper oracle21c
1个回答
0
投票

在目录字符串末尾添加反斜杠。你的代码对我来说可以使用反斜杠正斜杠,但使用反斜杠可能更安全,因为这是Windows通常使用的。

CREATE OR REPLACE DIRECTORY NETTEST AS 'Z:\';
© www.soinside.com 2019 - 2024. All rights reserved.