1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
SQL> SELECT JOB,WHAT,NEXT_DATE FROM USER_JOBS;
no rows selected
SQL> DROP TABLE FREQUENCE;
Table dropped.
SQL> CREATE TABLE FREQUENCE (NBJOURS NUMBER, NOJOB NUMBER);
Table created.
SQL> INSERT INTO FREQUENCE VALUES(7,NULL);
1 row created.
SQL> DROP PROCEDURE P;
Procedure dropped.
SQL> CREATE OR REPLACE PROCEDURE P IS
2 BEGIN
3 NULL;
4 END ;
5 /
Procedure created.
SQL>
SQL>
SQL> DECLARE
2 V_JOBNO NUMBER;
3 V_NBJOURS NUMBER:=7;
4 BEGIN
5 SELECT NBJOURS
6 INTO V_NBJOURS
7 FROM FREQUENCE ;
8 DBMS_JOB.SUBMIT(V_JOBNO, 'P;', TRUNC(SYSDATE) + V_NBJOURS , ' TRUNC(SYSDATE) +'|| V_NBJOUR
S);
9 UPDATE FREQUENCE SET NOJOB=V_JOBNO ;
10 COMMIT ;
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
SQL> SELECT * FROM FREQUENCE;
NBJOURS NOJOB
---------- ----------
7 81
SQL>
SQL> DESC USER_JOBS;
Name Null? Type
----------------------------------------- -------- ----------------------------
JOB NOT NULL NUMBER
LOG_USER NOT NULL VARCHAR2(30)
PRIV_USER NOT NULL VARCHAR2(30)
SCHEMA_USER NOT NULL VARCHAR2(30)
LAST_DATE DATE
LAST_SEC VARCHAR2(8)
THIS_DATE DATE
THIS_SEC VARCHAR2(8)
NEXT_DATE NOT NULL DATE
NEXT_SEC VARCHAR2(8)
TOTAL_TIME NUMBER
BROKEN VARCHAR2(1)
INTERVAL NOT NULL VARCHAR2(200)
FAILURES NUMBER
WHAT VARCHAR2(4000)
NLS_ENV VARCHAR2(4000)
MISC_ENV RAW(32)
INSTANCE NUMBER
SQL>
SQL>
SQL> COLUMN WHAT FORMAT A50;
SQL>
SQL> SELECT JOB,WHAT,NEXT_DATE FROM USER_JOBS UJ WHERE EXISTS( SELECT 1 FROM FREQUENCE F WHERE UJ.
JOB=F.NOJOB);
JOB WHAT NEXT_DATE
---------- -------------------------------------------------- ---------
81 P; 23-NOV-08
SQL>
SQL>
SQL> CREATE TRIGGER FREQUENCE_CHANGE
2 BEFORE UPDATE OF NBJOURS ON FREQUENCE
3 FOR EACH ROW
4 BEGIN
5 DBMS_JOB.REMOVE(:OLD.NOJOB );
6 DBMS_JOB.SUBMIT(:NEW.NOJOB, 'P;',TRUNC(SYSDATE) + :NEW.NBJOURS, ' TRUNC(SYSDATE) +'||:NEW.
NBJOURS);
7 END ;
8 /
Trigger created.
SQL>
SQL> UPDATE FREQUENCE SET NBJOURS=5;
1 row updated.
SQL>
SQL> SELECT * FROM FREQUENCE;
NBJOURS NOJOB
---------- ----------
5 82
SQL>
SQL> SELECT JOB,WHAT,NEXT_DATE FROM USER_JOBS UJ WHERE EXISTS( SELECT 1 FROM FREQUENCE F WHERE UJ.JO
B=F.NOJOB);
JOB WHAT NEXT_DATE
---------- -------------------------------------------------- ---------
82 P; 21-NOV-08
SQL>
SQL>
SQL> SELECT JOB,WHAT,NEXT_DATE FROM USER_JOBS ;
JOB WHAT NEXT_DATE
---------- -------------------------------------------------- ---------
82 P; 21-NOV-08
SQL> |
Partager