2

当我在 Oracle SQL 开发人员中执行查询时,我想在本地计算机上读取包含查询参数的文件。到目前为止,我在网上找到的示例并不充分。执行以下代码时,我不断收到“ORA-29283:无效文件操作”错误:

CREATE DIRECTORY SAMPLEDATA2 AS 'C:';
GRANT READ, WRITE ON DIRECTORY SAMPLEDATA2 TO PUBLIC;


declare
f utl_file.file_type;
s varchar2(200);
c number := 0;

BEGIN

f := utl_file.fopen('SAMPLEDATA2','sample2.txt','R');
loop
    utl_file.get_line(f,s);
    dbms_output.put_line(s);
    c := c + 1;
end loop;

exception
    when NO_DATA_FOUND then
        utl_file.fclose(f);
        dbms_output.put_line('Number of lines: ' || c);
end;
4

2 回答 2

4

UTL_FILE只能从存储在数据库服务器上的文件中读取数据。由于它是 PL/SQL 代码,它在数据库服务器上运行,并且只能访问数据库服务器上的 Oracle 进程可用的资源。

于 2011-06-06T15:27:53.317 回答
0

“当我在 Oracle SQL 开发人员中执行查询时,我想在本地计算机上读取包含查询参数的文件。”

这似乎是一个不寻常的 - 我要说“特殊” - 架构决定。这些价值观从何而来?为什么必须将它们存储在文件中?他们多久改变一次?

将本地 PC 文件的内容公开给远程数据库服务器将是非常困难的(即,我们正在谈论ftp使用诸如 WinSCP 之类的东西将其自动化或手动过程)。

另一方面,将一些查询参数应用于查询可能非常简单。例如通过使用 SYS_CONTEXT 和命名空间。但在提供替代解决方案之前,我需要了解更多细节。

于 2011-06-06T18:41:42.830 回答