需要用到utl_file包看例子:
先修改或添加init.ora的UTL_FILE_DIR参数
例如:
utl_file_dir=G:\oracle\temp //保存文本的路径为G:\oracle\temp
此过程将用户FILE_OWNER的过程FILE_NAME的代码保存到G:\oracle\temp\TEXT.TXT中
create or replace procedure PRO_TO_TXT(FILE_OWNER VARCHAR2,FILE_NAME VARCHAR2)
is
file_handle utl_file.file_type;
STOR_TEXT VARCHAR2(4000);
N NUMBER;
I NUMBER;
begin
I:=1;
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=FILE_OWNER AND NAME=FILE_NAME AND TYPE='PROCEDURE';
file_handle:=utl_file.fopen('G:\oracle\temp','test.txt','a');
utl_file.put_line(file_handle,'PROCEDURE NAME:'||FILE_NAME);
WHILE I<=N LOOP
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=FILE_OWNER
AND NAME=FILE_NAME AND TYPE='PROCEDURE' AND LINE= I;
I:=I+1;
utl_file.put_line(file_handle,stor_text);
END LOOP;
utl_file.fclose(file_handle);
commit;
end PRO_TO_TXT;
/
先修改或添加init.ora的UTL_FILE_DIR参数
例如:
utl_file_dir=G:\oracle\temp //保存文本的路径为G:\oracle\temp
此过程将用户FILE_OWNER的过程FILE_NAME的代码保存到G:\oracle\temp\TEXT.TXT中
create or replace procedure PRO_TO_TXT(FILE_OWNER VARCHAR2,FILE_NAME VARCHAR2)
is
file_handle utl_file.file_type;
STOR_TEXT VARCHAR2(4000);
N NUMBER;
I NUMBER;
begin
I:=1;
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=FILE_OWNER AND NAME=FILE_NAME AND TYPE='PROCEDURE';
file_handle:=utl_file.fopen('G:\oracle\temp','test.txt','a');
utl_file.put_line(file_handle,'PROCEDURE NAME:'||FILE_NAME);
WHILE I<=N LOOP
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=FILE_OWNER
AND NAME=FILE_NAME AND TYPE='PROCEDURE' AND LINE= I;
I:=I+1;
utl_file.put_line(file_handle,stor_text);
END LOOP;
utl_file.fclose(file_handle);
commit;
end PRO_TO_TXT;
/
我需要的只是 PRO_TO_TXT(日志文件路径,日志文件名称,日志内容) 啊!