System Packages Oracle PLSQL Tutorial

SQL>
SQL> DECLARE
  2     fid UTL_FILE.FILE_TYPE;
  3     f VARCHAR(200);
  4     v VARCHAR2(32767);
  5     topdir VARCHAR2(100);
  6
  7     PROCEDURE recNgo (str IN VARCHAR2)
  8     IS
  9     BEGIN
 10        DBMS_OUTPUT.PUT_LINE ('UTL_FILE error ' || str || ' in ' || f);
 11        UTL_FILE.FCLOSE (fid);
 12     END;
 13
 14     PROCEDURE writeit
 15     IS
 16     BEGIN
 17         f := 'c:\a';
 18         fid := UTL_FILE.FOPEN (f, 'temp.txt', 'W');
 19         UTL_FILE.PUT_LINE (fid, v);
 20         UTL_FILE.FCLOSE (fid);
 21        DBMS_OUTPUT.PUT_LINE ('Successful write to ' || f);
 22      EXCEPTION
 23         WHEN UTL_FILE.INVALID_PATH THEN recNgo ('invalid_path');
 24         WHEN UTL_FILE.INVALID_MODE THEN recNgo ('invalid_mode');
 25         WHEN UTL_FILE.INVALID_FILEHANDLE THEN recNgo ('invalid_filehandle');
 26         WHEN UTL_FILE.INVALID_OPERATION THEN recNgo ('invalid_operation');
 27         WHEN UTL_FILE.READ_ERROR THEN recNgo ('read_error');
 28         WHEN UTL_FILE.WRITE_ERROR THEN recNgo ('write_error');
 29         WHEN UTL_FILE.INTERNAL_ERROR THEN recNgo ('internal_error');
 30     END;
 31  BEGIN
 32     writeit;
 33  END;
 34  /
SQL>