如何在SQL Developer中读取本地文件?

时间:2011-06-06 15:22:37

标签: oracle input plsql oracle-sqldeveloper utl-file

当我在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;

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

  

“我想在我当地读一个文件   包含查询参数的计算机   当我在Oracle SQL中执行查询时   显影剂“。

这似乎很不寻常 - 我会说'特殊的' - 建筑决策。这些价值观从何而来?为什么必须将其存储在文件中?他们多久更换一次?

将本地PC文件的内容暴露给远程数据库服务器是非常困难的(即我们正在讨论使用ftp自动化它或者涉及类似WinSCP的手动过程。)

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