当我在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;
答案 0 :(得分:4)
UTL_FILE
只能读取存储在数据库服务器上的文件中的数据。由于它是PL / SQL代码,因此它在数据库服务器上运行,只能访问数据库服务器上Oracle进程可用的资源。
答案 1 :(得分:0)
“我想在我当地读一个文件 包含查询参数的计算机 当我在Oracle SQL中执行查询时 显影剂“。
这似乎很不寻常 - 我会说'特殊的' - 建筑决策。这些价值观从何而来?为什么必须将其存储在文件中?他们多久更换一次?
将本地PC文件的内容暴露给远程数据库服务器是非常困难的(即我们正在讨论使用ftp
自动化它或者涉及类似WinSCP的手动过程。)
另一方面,将一些查询参数应用于查询可能非常简单;例如,通过使用SYS_CONTEXT和名称空间。但在提供替代解决方案之前,我需要了解更多细节。