CREATE TYPE typ_jezyk AS OBJECT (
  nazwa VARCHAR2,
  priorytet NUMBER(2)
);
/

CREATE TABLE tablica_jezykow OF typ_jezyk;

INSERT INTO tablica_jezykow
   VALUES (typ_jezyk (‘Angielski’,1));
INSERT INTO tablica_jezykow
   VALUES (typ_jezyk (‘Francuski’,2));


CREATE TYPE typ_znajomosci_jezyka AS OBJECT (
   poziom NUMBER(2),
   ref_jezyk REF typ_jezyk);
/
   
CREATE TABLE tablica_umiejetnosci(nr_pracownika NUMBER(10), znajomosc_jezyka typ_znajomosci_jezyka);

INSERT INTO tablica_umiejetnosci VALUES (11, typ_znajomosci_jezyka(3, 
   (SELECT REF(a) FROM tablica_jezykow a 
      WHERE nazwa= 'Francuski')));

-- przykład dereferencji
SELECT 	a.nr_pracownika "Numer pracownika", DEREF(a.znajomosc_jezyka.ref_jezyk) "Język", a.znajomosc_jezyka.poziom "Poziom znajomości" 
FROM tablica_umiejetnosci a;
