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
|
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as mni
SQL>
SQL> CREATE OR REPLACE TYPE Type_prenoms AS VARRAY(5) OF VARCHAR(30);
2 /
Type created
SQL> CREATE OR REPLACE TYPE Type_personne AS OBJECT(
2 IdPersonne NUMBER(3),
3 nom VARCHAR(20),
4 prenom Type_prenoms)
5 NOT FINAL;
6 /
Type created
SQL> CREATE OR REPLACE TYPE Type_Employe UNDER Type_Personne (
2 fonction VARCHAR(20),
3 salaire NUMBER(10),
4 numHangarConteneur NUMBER(3),
5 numQuaiBateau NUMBER(3))
6 INSTANTIABLE
7 FINAL;
8 /
Type created
SQL> CREATE TABLE Employe OF Type_Employe (
2 CONSTRAINT Existe_id IdPersonne NOT NULL,
3 CONSTRAINT Existe_nom nom NOT NULL,
4 CONSTRAINT Existe_prenom prenom NOT NULL,
5 CONSTRAINT Existe_fonction fonction NOT NULL,
6 CONSTRAINT Existe_salaire salaire NOT NULL,
7 CONSTRAINT ClePrimaireEmploye PRIMARY KEY ( IdPersonne ) )
8 /
Table created
SQL>
SQL> CREATE OR REPLACE TRIGGER Declen_avtUpdate_Employe
2 BEFORE UPDATE OR INSERT ON Employe
3 FOR EACH ROW
4 DECLARE
5 sal_diff number;
6 BEGIN
7 sal_diff := :new.salaire - :old.salaire;
8 DBMS_OUTPUT.PUT_LINE('Employé');
9 END;
10 /
Trigger created
SQL> show err
No errors for TRIGGER MNI.DECLEN_AVTUPDATE_EMPLOYE
SQL> set serveroutput on
SQL> INSERT INTO Employe VALUES(1,'dupont',Type_prenoms('jean', 'Emile','Bernard'),'patron',5000,NULL,NULL);
Employé
1 row inserted
SQL>
SQL> UPDATE Employe
2 SET Employe.salaire = 2000
3 WHERE Employe.IdPersonne = 1;
Employé
1 row updated
SQL> |
Partager