Welcome 微信登录

首页 / 数据库 / MySQL / Oracle UTL_FILE的使用

使用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="u01Oracle","u02oracle" 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"但是文件不存在会先创建。在Oracle中判断某个字段的值是否为数字ora-01653 temp不够大问题解决相关资讯      Oracle高级培训 
  • delete表的数据后恢复  (08/30/2012 08:59:58)
  • 使用ASH信息,发现高CPUsession  (08/14/2012 07:21:32)
  • 如何阅读Oracle Errorstack Output  (08/14/2012 07:15:47)
  • Oracle Apps Patching:adpatch(  (08/16/2012 15:41:37)
  • 话说V$SQL_MONITOR  (08/14/2012 07:19:54)
  • Oracle Apps DBA工具:ADADMIN使用  (08/14/2012 07:00:09)
本文评论 查看全部评论 (0)
表情: 姓名: 字数