Tip obiect

Un tip obiect (clasă) conţine: atribute şi metode.
Paşii care trebuie parcurşi pentru utilizarea obiectelor în Oracle sunt:
Un tip obiect conţine două părti:

Un tip obiect se poate gestiona în SQL*Plus sau SQL Developer. In blocuri, proceduri, pachete, se poate face gestiunea unui tip obiect numai cu instrucţiunea execute immediate sau cu pachetul DBMS_SQL.

Sintaxa de definire a tipului obiect este:
Observaţii:

Exemple

  1. Tip obiect pentru operatii cu numere complexe
    Exemplul 1 pentru folosirea obiectului (în iSQL*Plus, SQLDeveloper)
    Exemplul 2 pentru folosirea obiectului (în iSQL*Plus, SQLDeveloper)
  2. Tip obiect cu constructor explicit
    Exemplul pentru folosirea obiectului (în iSQL*Plus, SQLDeveloper)

Moştenirea

La definirea unui tip obiect se poate folosi moştenirea simplă prin folosirea clauzei "UNDER nume_parinte". Tipul obiect care se crează va moşteni toate atributele şi metodele tipului părinte. Pe lângă aceste atribute şi metode noul tip de dată poate conţine atribute şi metode suplimentare care pot supraîncărca metodele tipului părinte.
La definirea unui tip obiect poate apare una din clauzele:
Tot la definirea unui tip obiect poate apare una din clauzele:

Exemple

  1. Tip obiect NOT FINAL
  2. Tip obiect NOT INSTANTIABLE

View-uri sistem

Pentru a obţine informaţii despre tipurile de date definite se pot folosi următoarele view-uri sistem (http://ss64.com/orad/):

Exemple

Referinte spre obiecte

Pentru consistenta datelor, in modelarea relationala se folosesc constrangerile referentiale prin intermediul cheilor straine (FK).
In modelul orientat obiect al bazelor de date, aceasta consistenta se asigura prin relatii de tip referinta intre obiecte, nu prin FK.
Referintele spre obiecte se declara prin tipul REF, ce reprezinta practic pointeri spre obiecte dintr-o tabela de obiecte.
Fiecare obiect intr-o tabela de obiecte are un identificator unic de obiect (OID) ce se poate stoca intr-o coloana de tip REF.
Pentru a specifica o tabela la care coloana referinta pointeaza, se foloseste clauza SCOPE IS.

Alte operatii posibile:

Se pot utiliza indexuri pentru regasirea rapida a informatiei:
CREATE INDEX  i_dept_addr1
          ON  department_loc (dept_addr.city);

Se pot construi declansatori (trigerr) pe tabele obiect:
CREATE TABLE movement (
     idno           NUMBER,
     old_office     location_typ,
     new_office     location_typ );

CREATE TRIGGER trigger1
  BEFORE UPDATE
             OF  office_loc
             ON  office_tab
   FOR EACH ROW
           WHEN  (new.office_loc.city = 'Redwood Shores')
   BEGIN
     IF :new.office_loc.building_no = 600 THEN
      INSERT INTO movement (idno, old_office, new_office)
       VALUES (:old.occupant.idno, :old.office_loc, :new.office_loc);
     END IF;
   END;/