mysql utl_file_Oracle UTL_FILE的使用

使用dbms_output输出有一个缺点是要到整个过程执行完毕才会把结果输出到屏幕,这样就无法在一个长时间运行的过程中通过dbms_outp

使用dbms_output输出有一个缺点是要到整个过程执行完毕才会把结果输出到屏幕,这样就无法在一个长时间运行的过程中通过dbms_output输出来随时监控执行状况。

为此可以使用utl_file包来输出文件。

utl_file.fopen 打开文件

utl_file.put_line 输出文件

utl_file.get_line 读取文件

utl_file.fclose 关闭文件

utl_file.fflush 强制输出缓冲

utl_file.fopen的第一个参数指定文件所在目录,这个目录必须包含在utl_file_dir参数指定的目录列表中,,或者指定一个directory对象。否则fopen()会报错。

1)utl_file_dir

设置这个参数必须重起数据库,可以指定多个目录(用逗号隔开)。如果指定为*,表示任意目录。

alter system set utl_file_dir='\u01\Oracle','\u02\oracle' scope=spfile;

2)directory

创建一个directory对象并赋予所有用户读写权利

create or replace directory logfile_target as '/u01/oracle';

grant read,write on directory logfile_target to public;

察看已有的directory对象

select * from dba_directories;

3)使用utl_file包输出文件

DECLARE

l_file utl_file.file_type;

BEGIN

l_file := utl_file.fopen('LOGFILE_TARGET', 'sql.log', 'W');

for row in (select * from user_tables)

loop

utl_file.put_line(l_file, dbms_metadata.get_ddl('TABLE', row.table_name));

end loop;

utl_file.fclose(l_file);

END;

*这里也可以写成utl_file.fopen('/u01/oracle', 'sql.log', 'W');

*fopen()的第三个参数OPEN_MODE,可以指定为

r -- read text

w -- write text

a -- append text

rb -- read byte mode

wb -- write byte mode

ab -- append byte mode

如果指定'a'或者'ab'但是文件不存在会先创建。

logo.gif

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值