Rumah > pangkalan data > tutorial mysql > Oracle UTL_FILE的使用

Oracle UTL_FILE的使用

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 17:17:03
asal
1343 orang telah melayarinya

使用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'但是文件不存在会先创建。

linux

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan