FCLOSE_ALL プロシージャー - オープンしているファイルをすべてクローズする

FCLOSE_ALL プロシージャーは、オープンしているファイルをすべてクローズします。 このプロシージャーは、クローズするオープン・ファイルがなくても、正常に実行されます。

構文

構文図を読む構文図をスキップするUTL_FILE.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.