| masterfrag |
20Jan2010 16:19 |
How to call a member procedure in a subtype/subclass (object relational oracle)
Hi all,
this is the code(no sintax error):
Code:
1)CREATE type Visita_ty
2)CREATE TYPE COLL_REF_VISITA_TY AS TABLE OF REF VISITA_TY
3)CREATE TYPE Dipendente_ty AS OBJECT
(
Nome VARCHAR2(20),
Cognome VARCHAR2(20),
Cf VARCHAR2(20),
DataN Date
) NOT FINAL
4)CREATE TYPE Amministrativo_ty UNDER Dipendente_ty
(
Livello NUMBER,
Mansione VARCHAR(20)
)FINAL
5)CREATE TYPE Medico_ty UNDER Dipendente_ty
(
Specialita VARCHAR(20),
FaVisita Coll_Ref_Visita_ty,
Reparto VARCHAR(20),
MEMBER PROCEDURE AddVisita (CF VARCHAR2,Data DATE,Tipo VARCHAR2,Ticket Number)
)FINAL
6)CREATE TYPE Paziente_ty AS OBJECT
(
CF VARCHAR2(16),
NOME VARCHAR2(20),
COGNOME VARCHAR2(20),
FaVisita Coll_Ref_Visita_ty
)
7)CREATE type Visita_ty AS OBJECT (
Tipo VARCHAR(20),
Data DATE,
Ticket number,
Paziente REF Paziente_ty,
Medico REF Medico_ty
)
8)CREATE TYPE BODY Medico_ty is
MEMBER PROCEDURE AddVisita(CF VARCHAR,Data DATE, Tipo VARCHAR,Ticket
number) is
DECLARE
Visita Visita_ty;
RefPaziente REF Paziente_ty;
BEGIN
SELECT REF(P) INTO REFPAZIENTE
FROM Paziente_TAB P
WHERE P.CF=CF
VISITA :=Visita_ty(Data,Tipo,Ticket,RefPaziente,REF(SELF))
INSERT INTO Visita_TAB values Visita
INSERT INTO TABLE (SELF.FaVisita) VALUES REF(Visita)
INSERT INTO TABLE (SELECT P.FaVisita
FROM PAZIENTE_TAB P
WHERE P.CF=CF ) VALUES REF(VISITA)
END
9)CREATE TABLE Paziente_TAB OF Paziente_ty
(CF PRIMARY KEY)
NESTED TABLE FaVisita
STORE AS PazienteFaVisita_TAB
10)CREATE TABLE Dipendente_TAB OF Dipendente_ty
(CF PRIMARY KEY)
NESTED TABLE TREAT(OBJECT_VALUE AS medico_ty).FaVisita STORE AS visite_tab
11)CREATE TABLE Visita_TAB OF Visita_ty
(Paziente SCOPE IS Paziente_TAB,
Medico SCOPE IS Dipendente_TAB)
// some insert
INSERT INTO PAZIENTE_TAB (nome,cognome,cf,favisita)
VALUES('rosario','brescia','ros80lit04edk19f',Coll_Ref_Visita_ty())
INSERT INTO PAZIENTE_TAB (nome,cognome,cf,favisita)
VALUES('antonio','rosato','ant80lit04edk19f',Coll_Ref_Visita_ty())
INSERT INTO dipendente_tab values(medico_ty( 'rosario','manfredoina','rosak2442jk3','10-feb-1960','psicologia',
coll_ref_visita_ty(),'psi1'))
INSERT INTO dipendente_tab values(medico_ty( 'manuele','doria','fafasd32442jk3','10-gen-1970','chirurgia',coll_ref_visita_ty(),'chi1'))
I want at this point call the member procedure AddVisita of one row where the object is a medico_ty in dipendente_tab
(gettin the row like this (think)
select treat(value(d) as medico_ty) d
from dipendente_tab d
where d.cf=constant )
for fill a row of visita_tab and the nested table in
paziente_tab(FaVisita) and dipendente_tab where dipendente is of
medico_ty (FaVisita).
Like this d.AddVisita(par1,par2,par3,par4), is possible? how to make it?
Thx for the help.
|