首先以sysdba身份登录到enterprise manager consol, 点选:例程->配置->所有初始化参数 然后更改utl_file_dir为 e:\data 然后会提示重启数据库,重启 在执行一下脚本,然后 exec check_data 祝你好运 create or replace procedure check_data is file_handle UTL_FILE.FILE_TYPE; begin file_handle := UTL_FILE.FOPEN('e:\data','data.zip','r'); --UTL_FILE.PUTF(file_handle, '写入的信息\n'); UTL_FILE.FCLOSE(file_handle); exception WHEN utl_file.invalid_path THEN raise_application_error(-20000, 'ERROR: Invalid path for file or path not in INIT.ORA.'); end check_data; /
不会吧.要重启数据库?不重启不行吗?
哪好。只能等到晚上才能重启了。谢谢!
白天客户端要访问数据库没法试。:(
可以改为
file_handle := UTL_FILE.FOPEN('E:\\data', 'data.zip', 'r');如果不行就
file_handle := UTL_FILE.FOPEN('E:\\\data\\', 'data.zip', 'r');
如果事先定义一个变量,这个变量从配置文件或表中取出路径,这个时候配置文件或表里路径就可以是形如:E:\data(如果不行就是E:\data\)。
点选:例程->配置->所有初始化参数
然后更改utl_file_dir为 e:\data
然后会提示重启数据库,重启
在执行一下脚本,然后
exec check_data
祝你好运
create or replace procedure check_data is
file_handle UTL_FILE.FILE_TYPE;
begin
file_handle := UTL_FILE.FOPEN('e:\data','data.zip','r');
--UTL_FILE.PUTF(file_handle, '写入的信息\n');
UTL_FILE.FCLOSE(file_handle);
exception
WHEN utl_file.invalid_path THEN
raise_application_error(-20000, 'ERROR: Invalid path for file or path not in INIT.ORA.');
end check_data;
/
--UTL_FILE.PUTF(file_handle, '写入的信息\n');
如果是ORACLE9I,就在Enterprise manager console里面改utl_file_dir
哪我每次读取的文件路径都不同的话.
每读一次文件,我就得改utl_file_dir.
并且还要重启服务器,好像不怎么现实呀.
在Enterprise manager console里面改 utl_file_dir参数的值为 *
* 表示utl_file包可以读取任意路径
^_^
zip能读啊,为什么不?
设置 utl_file_dir= *
oracle8i在DBA Studio里面改utl_file_dir参数值为*
* 表示utl_file包可以读取任意路径
重启服务器.