发布日期:2015-11-06 11:48 来源: 标签: 数据库 oracle教程 oracle函数 directory目录
本章我们主要学习Oracle中directory目录的创建及如何设置目录的读写权限?下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
本案例具体创建如下:
create or replace directory exp_dir as '/tmp';
目录创建以后,就可以把读写权限授予特定用户,具体语法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;
例如:
grant read, write on directory exp_dir to eygle;
此时用户eygle就拥有了对该目录的读写权限。
让我们看一个简单的测试:
SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file';
Directory created.
SQL> declare
2    fhandle utl_file.file_type;
3  begin
4    fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w');
5    utl_file.put_line(fhandle , 'eygle test write one');
6    utl_file.put_line(fhandle , 'eygle test write two');
7    utl_file.fclose(fhandle);
8  end;
9  /
PL/SQL procedure successfully completed.
SQL> !
[oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt
eygle test write one
eygle test write two
[oracle@jumper 9.2.0]$
类似的我们可以通过utl_file来读取文件:
SQL> declare
2    fhandle   utl_file.file_type;
3    fp_buffer varchar2(4000);
4  begin
5    fhandle := utl_file.fopen ('UTL_FILE_DIR','example.txt', 'R');
6
7    utl_file.get_line (fhandle , fp_buffer );
8    dbms_output.put_line(fp_buffer );
9    utl_file.get_line (fhandle , fp_buffer );
10    dbms_output.put_line(fp_buffer );
11    utl_file.fclose(fhandle);
12  end;
13  /
eygle test write one
eygle test write two
PL/SQL procedure successfully completed.
可以查询dba_directories查看所有directory.
SQL> select * from dba_directories;
OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ ------------------------------
SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump
SYS                            EXP_DIR                        /opt/oracle/utl_file
可以使用drop directory删除这些路径.
SQL> drop directory exp_dir;
Directory dropped
SQL> select * from dba_directories;
OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ ------------------------------
SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump

相关评论

专题信息
    ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;本教程主要是针对oracle应用过程中我们常用的函数进行深入讲解,让大家能够通过代码实例更快、更有效的掌握oracle函数,希望对大家有所帮助。