DBMS_JOB package.
SQL> SQL> CREATE TABLE MyTable ( 2 num_col NUMBER, 3 char_col VARCHAR2(60) 4 ); Table created. SQL> CREATE SEQUENCE temp_seq 2 START WITH 1 3 INCREMENT BY 1; Sequence created. SQL> SQL> CREATE OR REPLACE PROCEDURE TempInsert AS 2 BEGIN 3 INSERT INTO MyTable (num_col, char_col) 4 VALUES (temp_seq.NEXTVAL, 5 TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')); 6 COMMIT; 7 END TempInsert; 8 / Procedure created. SQL> SQL> VARIABLE v_JobNum NUMBER SQL> BEGIN 2 DBMS_JOB.SUBMIT(:v_JobNum, 'TempInsert;', SYSDATE, 3 'SYSDATE + (90/(24*60*60))'); 4 COMMIT; 5 END; 6 / PL/SQL procedure successfully completed. SQL> SQL> PRINT v_JobNum V_JOBNUM ---------- 22 SQL> SQL> BEGIN 2 DBMS_JOB.REMOVE(:v_JobNum); 3 COMMIT; 4 END; 5 / PL/SQL procedure successfully completed. SQL> SQL> SQL> DROP SEQUENCE temp_seq; Sequence dropped. SQL> SQL> drop table mytable; Table dropped.