Debug package based on UTL_FILE : Utility Package « PL SQL « Oracle PL / SQL






Debug package based on UTL_FILE

 

CREATE OR REPLACE PACKAGE Debug AS
  v_DebugDir VARCHAR2(50);
  v_DebugFile VARCHAR2(20);

  PROCEDURE Debug(p_Description IN VARCHAR2,
                  p_Value IN VARCHAR2);

  PROCEDURE Reset(p_NewFile IN VARCHAR2 := v_DebugFile,
                  p_NewDir IN VARCHAR2 := v_DebugDir) ;

  PROCEDURE Close;
END Debug;
/

CREATE OR REPLACE PACKAGE BODY Debug AS
  v_DebugHandle UTL_FILE.FILE_TYPE;
  PROCEDURE Debug(p_Description IN VARCHAR2,p_Value IN VARCHAR2) IS
  BEGIN
    UTL_FILE.PUTF(v_DebugHandle, '%s: %s\n', p_Description, p_Value);
    UTL_FILE.FFLUSH(v_DebugHandle);
  EXCEPTION
    WHEN UTL_FILE.INVALID_OPERATION THEN
      RAISE_APPLICATION_ERROR(-20102, 'Debug: Invalid Operation');
    WHEN UTL_FILE.INVALID_FILEHANDLE THEN
      RAISE_APPLICATION_ERROR(-20103, 'Debug: Invalid File Handle');
    WHEN UTL_FILE.WRITE_ERROR THEN
      RAISE_APPLICATION_ERROR(-20104, 'Debug: Write Error');
  END Debug;

  PROCEDURE Reset(p_NewFile IN VARCHAR2 := v_DebugFile,
                  p_NewDir IN VARCHAR2 := v_DebugDir) IS
  BEGIN
    IF UTL_FILE.IS_OPEN(v_DebugHandle) THEN
      UTL_FILE.FCLOSE(v_DebugHandle);
    END IF;

    v_DebugHandle := UTL_FILE.FOPEN(p_NewDir, p_NewFile, 'w');
    v_DebugFile := p_NewFile;
    v_DebugDir := p_NewDir;
  EXCEPTION
    WHEN UTL_FILE.INVALID_PATH THEN
      RAISE_APPLICATION_ERROR(-20100, 'Reset: Invalid Path');
    WHEN UTL_FILE.INVALID_MODE THEN
      RAISE_APPLICATION_ERROR(-20101, 'Reset: Invalid Mode');
    WHEN UTL_FILE.INVALID_OPERATION THEN
      RAISE_APPLICATION_ERROR(-20101, 'Reset: Invalid Operation');
  END Reset;

  PROCEDURE Close IS
  BEGIN
    UTL_FILE.FCLOSE(v_DebugHandle);
  END Close;

BEGIN
  v_DebugDir := '/tmp';
  v_DebugFile := 'debug.out';
  Reset;
END Debug;
/

show error

 








Related examples in the same category

1.stop_watch
2.Debug package
3.This object type represents a point on a Cartesian grid.
4.Debug package: inserts into a test table
5.Debug package: uses DBMS_OUTPUT.
6.time the performance enhancements of native dynamic SQL.