FCLOSE_ALL プロシージャー - オープンしているファイルをすべてクローズする
FCLOSE_ALL プロシージャーは、オープンしているファイルをすべてクローズします。 このプロシージャーは、クローズするオープン・ファイルがなくても、正常に実行されます。
構文
許可
UTL_FILE モジュールに対する EXECUTE 特権。
例
2 つのファイルをオープンし、いくつかのテキストをファイルに書き込んだ後、オープン・ファイルをすべてクローズします。
SET SERVEROUTPUT ON@
CREATE OR REPLACE PROCEDURE proc1()
BEGIN
DECLARE v_filehandle UTL_FILE.FILE_TYPE;
DECLARE v_filehandle2 UTL_FILE.FILE_TYPE;
DECLARE isOpen BOOLEAN;
DECLARE v_dirAlias VARCHAR(50) DEFAULT 'mydir';
DECLARE v_filename VARCHAR(20) DEFAULT 'myfile.csv';
DECLARE v_filename2 VARCHAR(20) DEFAULT 'myfile2.csv';
CALL UTL_DIR.CREATE_OR_REPLACE_DIRECTORY('mydir', '/tmp');
SET v_filehandle = UTL_FILE.FOPEN(v_dirAlias,v_filename,'w');
SET isOpen = UTL_FILE.IS_OPEN( v_filehandle );
IF isOpen != TRUE THEN
RETURN -1;
END IF;
CALL UTL_FILE.PUT_LINE(v_filehandle,'Some text to write to a file.');
SET v_filehandle2 = UTL_FILE.FOPEN(v_dirAlias,v_filename2,'w');
SET isOpen = UTL_FILE.IS_OPEN( v_filehandle2 );
IF isOpen != TRUE THEN
RETURN -1;
END IF;
CALL UTL_FILE.PUT_LINE(v_filehandle2,'Some text to write to another file.');
CALL UTL_FILE.FCLOSE_ALL;
SET isOpen = UTL_FILE.IS_OPEN( v_filehandle );
IF isOpen != TRUE THEN
CALL DBMS_OUTPUT.PUT_LINE(v_filename || ' is now closed.');
END IF;
SET isOpen = UTL_FILE.IS_OPEN( v_filehandle2 );
IF isOpen != TRUE THEN
CALL DBMS_OUTPUT.PUT_LINE(v_filename2 || ' is now closed.');
END IF;
END@
CALL proc1@この例では、以下の出力が結果として戻ります。
myfile.csv is now closed.
myfile2.csv is now closed.