System Packages Oracle PLSQL

SQL>
SQL> set serveroutput on
SQL>
SQL> CREATE TABLE MyTable (
  2    num_col    NUMBER,
  3    char_col   VARCHAR2(60)
  4    );
Table created.
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE TempInsert
  2    (p_NextDate IN OUT DATE) AS
  3    v_SeqNum   NUMBER;
  4    v_StartNum NUMBER;
  5    v_SQLErr   VARCHAR2(60);
  6  BEGIN
  7    SELECT 1
  8      INTO v_SeqNum
  9      FROM dual;
 10
 11    BEGIN
 12      SELECT num_col
 13        INTO v_StartNum
 14        FROM MyTable
 15        WHERE char_col = 'TempInsert Start';
 16
 17      INSERT INTO MyTable (num_col, char_col)
 18        VALUES (v_SeqNum,
 19                TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS'));
 20
 21    EXCEPTION
 22      WHEN NO_DATA_FOUND THEN
 23        DELETE FROM MyTable;
 24
 25        INSERT INTO MyTable (num_col, char_col)
 26          VALUES (v_SeqNum, 'TempInsert Start');
 27    END;
 28
 29    IF v_SeqNum - V_StartNum > 5 THEN
 30      p_NextDate := NULL;
 31      INSERT INTO MyTable (num_col, char_col)
 32        VALUES (v_SeqNum, 'TempInsert End');
 33
 34    END IF;
 35
 36    COMMIT;
 37  EXCEPTION
 38    WHEN OTHERS THEN
 39      v_SQLErr := SUBSTR(SQLERRM, 1, 60);
 40      INSERT INTO MyTable (num_col, char_col)
 41        VALUES (1, v_SQLErr);
 42
 43      p_NextDate := NULL;
 44
 45      COMMIT;
 46  END TempInsert;
 47  /
Procedure created.
SQL>
SQL> VARIABLE v_JobNum NUMBER
SQL> BEGIN
  2    DBMS_JOB.SUBMIT(:v_JobNum, 'TempInsert(next_date);', SYSDATE,
  3                    'sysdate + (60/(24*60*60))');
  4    COMMIT;
  5  END;
  6  /
PL/SQL procedure successfully completed.
SQL> PRINT v_JobNum
  V_JOBNUM
----------
        45
SQL>
SQL> drop table MyTable;
Table dropped.
SQL>