DBAロールを使用するための1つの許可ユーザーがOracleにログオンできます(hly201907)UTL_FILEを使用
ON UTL_FILE TOのhly201907をEXECUTE GRANTを。
2作業フォルダ(D:/ TEMP)を作成し、それは、ニックネーム(D_OUTPUT)であります
ディレクトリD_OUTPUTを作成したり、交換する 'D:/ TEMP';
3使用するOracle与えられたユーザー権利の上のDBAロールログ(hly201907)読み書きフォルダ
hly201907へのディレクトリD_OUTPUT読み、書き込みを許可します。
4(ファイルへの最後のブラシデータ)ストアドプロシージャを作成します
create or replace PROCEDURE TEST AS
V_FILE UTL_FILE.FILE_TYPE;
L_BUFFER VARCHAR2(4000);
V_SqlString VARCHAR2(2000);
BEGIN
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'w');-- 写文件
-- 定义sql 语句
V_SqlString := 'select to_char(sysdate,'|| '''yyyy-mm-dd hh24:mi:ss''' || ') from dual';
-- 执行sql 语句 并把结果赋值给L_BUFFER
execute immediate V_SqlString into L_BUFFER;
-- 把L_BUFFER 写入到文件 连续写入三次
UTL_FILE.PUT_LINE(V_FILE, L_BUFFER);
UTL_FILE.PUT_LINE(V_FILE, L_BUFFER);
UTL_FILE.PUT_LINE(V_FILE, L_BUFFER);
-- 这里关闭文件。
UTL_FILE.FCLOSE(V_FILE);
NULL;
END TEST;
5つの作成するストアドプロシージャ(各添加、時間およびリフレッシュ)
create or replace PROCEDURE TEST AS
V_FILE UTL_FILE.FILE_TYPE;
L_BUFFER VARCHAR2(4000);
V_SqlString VARCHAR2(2000);
BEGIN
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'w');-- 写文件
-- 定义sql 语句
V_SqlString := 'select to_char(sysdate,'|| '''yyyy-mm-dd hh24:mi:ss''' || ') from dual';
-- 执行sql 语句 并把结果赋值给L_BUFFER
execute immediate V_SqlString into L_BUFFER;
-- 把L_BUFFER 写入到文件
UTL_FILE.PUT_LINE(V_FILE, L_BUFFER);
-- 这里关闭文件。
UTL_FILE.FCLOSE(V_FILE);
-- 读取文件
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'Data.txt', 'a');
-- 定义sql 语句
V_SqlString := 'select to_char(sysdate,'|| '''yyyy-mm-dd hh24:mi:ss''' || ') from dual';
-- 执行sql 语句 并把结果赋值给L_BUFFER
execute immediate V_SqlString into L_BUFFER;
-- 把L_BUFFER 写入到文件
UTL_FILE.PUT_LINE(V_FILE, L_BUFFER);
-- 这里关闭文件。
UTL_FILE.FCLOSE(V_FILE);
NULL;
END TEST;
6本書は、指定した出力ファイル(:/TEMP/Data.txt D)に出力されます。
次のように5月7日、出力データ(ログ)は、単一のSQLストアドプロシージャに書き込まれます。
create or replace procedure OUTPUT_LOG(fileName IN VARCHAR2,message IN VARCHAR2 ) is
-- 需要两个参数 第一个参数是输出的文件名称 第二个参数是要输出的字符串
V_FILE UTL_FILE.FILE_TYPE;
V_SqlString VARCHAR2(200);
V_message VARCHAR2(200);
begin
V_SqlString := 'select to_char(sysdate,'|| '''yyyy-mm-dd hh24:mi:ss''' || ') from dual';
execute immediate V_SqlString into V_message;
V_message :=message||'-------------'||V_message;
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', fileName||'.log', 'a');-- 写文件
UTL_FILE.PUT_LINE(V_FILE, V_message);
-- 这里关闭文件。
UTL_FILE.FCLOSE(V_FILE);
end OUTPUT_LOG;
PLSQL 8データ出力例(ログ)ストアドプロシージャの呼び出しモード、
BEGIN
OUTPUT_LOG('2019-09-16','TEST');
END;
9ディレクトリD_OUTPUTのこの意志は:データが今日の日付2019-09-16.logファイル(D / TEMP)のファイルを追加します
TEST --------------------- 2019年9月16日夜06時09分58秒
。