其实,在Oracle中我们也可以实现对文件系统的读写,提高了系统的可用性和扩展性。
首先要创建一个Directory:
Create or Replace Directory ORA_DIRECTORY as 'D:\ora_directory';
注意,这个目录应该要确实存在,否则你在引用ORA_DIRECTORY前要手动创建它。
你还可以将访问权限授予其他用户:
Grant READ,WRITE on Directory ORA_DIRECTORY to user_name;
现在让我们来访问这个目录:
Create or replace Procedure proc_Directory(pString varchar2) as
f_handle utl_file.file_type;
begin
--打开指定目录中的文件,如果该文件不存在,将新建一个同名文件,
--w/r表示读或写打开,
--第一个参数就是先前创建的Directory,名字用大写,并且用单引号括起来,
--第二个参数表示要打开的文件名字。
f_handle := utl_file.fopen('ORA_DIRECTORY','file_name.txt','W');
--写入pString存储的串值
utl_file.put_line(f_handle,pString);
--养成关闭资源的好习惯
utl_file.fclose(f_handle);
end proc_Directory;
同样的也可以进行读取访问:
Create or replace Procedure proc_Read_Directory(pString out varchar2) as
f_handle utl_file.file_type;
f_buffer varchar2(4000);
begin
--打开指定目录中的文件,如果该文件不存在,将新建一个同名文件,
--w/r表示读或写打开,
--第一个参数就是先前创建的Directory,名字用大写,并且用单引号括起来,
--第二个参数表示要打开的文件名字。
f_handle := utl_file.fopen('ORA_DIRECTORY','file_name.txt','R');
--读取一行,如果再次执行utl_file.get_line(),那么会自动读取下一行。
utl_file.get_line(f_handle,f_buffer);
pString := f_buffer;
--养成关闭资源的好习惯
utl_file.fclose(f_handle);
end proc_Directory;
查看系统中所有的Directory:
select * from dba_directories;
删除无用的Directory:
Drop Directory ORA_DIRECTORY;
有任何错误和遗漏,请大家不吝赐教。
阅读(1485) | 评论(0) | 转发(0) |