Oracle utl_file文件写入读取

Oracle utl_file文件写入读取


--1、创建服务器目录
(1)在system用户下执行如下命令:CREATE OR REPLACE DIRECTORY MAIL_FILE_DIR AS '/tmp/data/DEV';
(2)给创建的目录赋权限,执行:GRANT read ,write ON DIRECTORY MAIL_FILE_DIR TO PUBLIC;
如果是双节点的服务器,在两个服务器上执行上述sql语句


--2、在数据库服务器上创建/mail_file/data/PROD目录
切换到主目录'/'下执行创建目录命令
目录创建完成后在主目录'/'下执行赋权限命令:chmod 777 /mail_file/data/PROD


--3、向目录下写入文件
DECLARE
    fhandle utl_file.file_type;
BEGIN
    fhandle := utl_file.fopen('MAIL_FILE_DIR'
                             ,'example.txt'
                             ,'w');
    utl_file.put_line(fhandle
                     ,'gh test write one');
    utl_file.put_line(fhandle
                     ,'gh test write two');
    utl_file.fclose(fhandle);
END;


--4、读出文件的内容
DECLARE
    fhandle   utl_file.file_type;
    fp_buffer VARCHAR2(4000);
BEGIN
    fhandle := utl_file.fopen('MAIL_FILE_DIR'
                             ,'example.txt'
                             ,'R');


    utl_file.get_line(fhandle
                     ,fp_buffer);
    dbms_output.put_line(fp_buffer);
    utl_file.get_line(fhandle
                     ,fp_buffer);
    dbms_output.put_line(fp_buffer);
    utl_file.fclose(fhandle);

END;


常见报错:
ORA-29283 : 文件操作无效
ORA-06512 : 在"SYS.UTL_FILE", line 449
ORA-29283 : 文件操作无效

错误原因:在数据库下面没有目录或者目录没有赋读写权限

解决办法:先查看文件和路径是哪一步权限不够,然后针对权限重新赋权限。


猜你喜欢

转载自blog.csdn.net/f_zhangyu/article/details/80500619