Devo definire un tipo di oggetto Dipendente che avrà alcuni attributi, quindi devo definire un tipo di oggetto Manager che erediterà il tipo Employee e avrò un attributo adizionale chiamato nrEmp che conterrà il numero di dipendenti che ogni manager ha sotto il suo comando. Inoltre devo implementare il metodo ORDER per il tipo Manager, quindi posso ordinare i manager in base al numero di dipendenti che hanno. In primo luogo ho definito questo tipo:Come sovrascrivere il metodo ORDER PL/SQL?
CREATE OR REPLACE TYPE Departament AS OBJECT (
deptno NUMBER(2),
dname CHAR(14)
);
Next i definito il tipo di organigramma:
CREATE OR REPLACE TYPE Employee AS OBJECT (
empno NUMBER(4),
ename CHAR(10),
dept REF Departament,
sal NUMBER(7,2)
) NOT FINAL;
Tutto ha funzionato bene fino ad ora. Successivo cerco di definire il tipo di manager:
CREATE OR REPLACE TYPE Manager UNDER Employee (
nrEmp INTEGER,
ORDER MEMBER FUNCTION compare(m Manager) RETURN INTEGER
);
Quando faccio questo io ottenere il seguente errore:
Error(1,1): PLS-00646: MAP or ORDER method must be defined in the root of the subtype hierarchy
a quanto ho capito devo dichiarare il metodo nel tipo Employee. Ma non sono sicuro di come farlo nel modo giusto. Non ho trovato alcun esempio che mostra come implementare il metodo ORDER quando si eredita. Qualsiasi aiuto sarebbe apprezzato. Grazie.
Il manuale potrebbe aiutare: http://docs.oracle.com/cd/E11882_01/appdev.112/e11822/adobjbas.htm#sthref161 –