首页 > 学院 > 开发设计 > 正文

oracle文件操作

2019-11-08 20:59:48
字体:
来源:转载
供稿:网友

–此处由linux服务器下 1.授权创建目录的权限

Grant create any directory to username;

2.创建目录

create or replace directory op_file as '/u01/app/';

3.读写对应目录权限

GRANT WRITE,READ ON DIRECTORY ORADIR TO username;

4.授权给用户使用utl_file包的权限

GRANT EXECUTE ON utl_file TO username;

5.文件写入

CREATE OR REPLACE PROCEDURE PROC_RW_FILE IS LINE VARCHAR2(32767); OUT_FILE UTL_FILE.FILE_TYPE; --定义一个文件类型 type c_type is ref cursor; cur_sp_out C_TYPE;BEGIN --打开指定目录的文件。op_file是文件所在的目录,xx.txt是要读取的文件,R文件写入的模式 W:写, --文件不存在则创建,会覆盖 A:追加 R:读 注意:这里的op_file需要用单引号引起来--此处for循环包含个人业务 FOR EMP IN (SELECT A.UUID, A.DRSJ, A.TBSJ, A.TNAME, A.QHBM, B.XQJOINT FROM T_IMP_REC A INNER JOIN FX_TABLENAME B ON (A.TNAME = B.TNAME) WHERE ROWNUM = 1) loop BEGIN OUT_FILE := UTL_FILE.FOPEN('OP_FILE', emp.uuid || '_' || emp.tname || '.txt', 'W'); OPEN cur_sp_out FOR -- 利用游标操作动态sql结果 'SELECT ' || EMP.XQJOINT || ' FROM ' || EMP.TNAME || ' WHERE TBSJ = :TBSJ AND SCSJ = :SCSJ AND QHBM LIKE :QHBM' USING EMP.TBSJ, EMP.DRSJ, EMP.QHBM || '%'; LOOP FETCH CUR_SP_OUT INTO LINE; EXIT WHEN CUR_SP_OUT%NOTFOUND; UTL_FILE.put_line(OUT_FILE,LINE); --不建议使用put END LOOP; CLOSE CUR_SP_OUT; UTL_FILE.FFLUSH(OUT_FILE); UTL_FILE.FCLOSE(OUT_FILE); --关闭文件流 END; end loop;END;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表