utl_fileを使用してファイルをディレクトリに書き込むプログラムを作成しました。UTL_FILEとは別にファイルに書き込む方法
サンプルスクリプト:
PROCEDURE XX_FILE_TRANS (X_RETCODE VARCHAR2,X_ERRBUF VARCHAR2)
IS
CURSOR ORG_CUR IS
SELECT
'"'||XTRO.IDENTIFIER||'","'||
XTRO.ORGANIZATION_CODE||'","'||
XTRO.NAME ||'","'||
XTRO.PARENT_CODE ||'","'||
XTRO.INDUSTARY_NUMBER ||'","'||
XTRO.STATUS||'","'||
XTRO.SEQUENCE||'"' "ORG_DATA"
FROM abc XTRO;
ORG_REC ORG_CUR%rowtype;
begin
begin
delete XXHCM.XXHR_TAL_REC_ORGANIZATION_hist
where 1 = 1
AND creation_date < TRUNC (SYSDATE - 60);
COMMIT;
EXCEPTION
when OTHERS
then
null;
end;
LOAD_archive_TABLE; -- call the history table procedure
DBMS_OUTPUT.PUT_LINE('start');
fileHandler := UTL_FILE.FOPEN('INTF_DIR_INBOUND', LC_OLF_ORG, 'W');
UTL_FILE.put_line(fileHandler, 'Identifier,OrgCode,OrgName,ParentCode,IndustryNumber,StatusDescription,Sequence');
FOR ORG_REC IN ORG_CUR
LOOP
UTL_FILE.put_line(fileHandler,ORG_REC.ORG_DATA);
END LOOP;
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('end');
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,' Invalid File Path');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('1'||sqlerrm);
WHEN UTL_FILE.WRITE_ERROR THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,' Write Permission on does not exist');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('2'||sqlerrm);
WHEN UTL_FILE.INVALID_MODE THEN
FND_FILE.PUT(FND_FILE.LOG,'THE INVALID MODE OF DATA FILE');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('3'||sqlerrm);
WHEN UTL_FILE.INVALID_OPERATION THEN
FND_FILE.PUT(FND_FILE.LOG,' THE FILE CANNOT BE OPENED AS REQUESTED.');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('4'||sqlerrm);
WHEN UTL_FILE.INVALID_MAXLINESIZE THEN
FND_FILE.PUT(FND_FILE.LOG,'THE SPECIFIED MAXIMUM LINE SIZE IS TOO LARGE OR TOO SMALL.');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('5'||sqlerrm);
WHEN UTL_FILE.ACCESS_DENIED THEN
FND_FILE.PUT(FND_FILE.LOG,'ACCESS TO THE DIRECTORY OBJECT IS DENIED.');
FND_FILE.PUT(FND_FILE.LOG,'OPERATING SYSTEM ERROR OCCURED DURING THE WRITE OPERATION.');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('6'||sqlerrm);
WHEN UTL_FILE.CHARSETMISMATCH THEN
FND_FILE.PUT(FND_FILE.OUTPUT,'THIS FILE IS OPEN FOR NCHAR DATA.');
UTL_FILE.FCLOSE(fileHandler);
dbms_output.put_line('7'||sqlerrm);
END;
は、今私が持っているサーバーは私がUTL_FILEを使用することはできませんので、whchのDBサーバーではありません。 UTL_FILE以外の方法でファイルに書き込むことはできますか?
どのようにDBサーバーにできないのですか?どこでそれをしようとしていますか?あなたはおそらくOracleフォームを使用していますか? – pablomatico
アプリケーションサーバー –
と、このpl/sqlプロシージャをどこで実行していますか? oracleフォームを使用している場合は、 'TEXT_IO'パッケージ – pablomatico