PL SQL objet à partir de relationnel
Bonjour,
Soit deux tables tout ce qu'il y a de plus relationnelles par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| create table assure(
id char(13),
nom varchar2(15),
prenom varchar2(15),
constraint pk_ass primary key(id)
);
create table remboursement(
idremb number(10),
idassure char(13),
valeur number(5,2),
date_remb date,
constraint pk_ben primary key(idremb),
constraint fk_rembass foreign key (idassure) references assure
); |
Avec l'identifiant de remboursement renseigné à partir d'une sequence et d'un trigger. J'ai crée deux type objets correspondants, et un type varray de remboursements :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| create or replace type typ_remb as object
(
idremb number(10),
valeur number(5,2),
date_remb date
)
;
create or replace type tab_remb is varray(10000) of typ_remb;
create or replace type typ_assure as object
(
id char(13),
nom varchar2(15),
prenom varchar2(15),
remboursements tab_remb
)
; |
J'ai ensuite crée une vue qui me permet de manipuler mes assurés et remboursements comme des objets :
Code:
1 2 3 4 5 6 7
| create view VASSURE of typ_assure with object OID(id) as
select id, nom, prenom,
CAST
(multiset
(select typ_remb(idremb , valeur, date_remb) from remboursement B where B.idassure=A.id)
as tab_remb)
from assure A; |
J'aimerai savoir si c'est possible de pratiquer des insertions sur la vue VASSURE, c'est à dire en PL de créer un objet de type TYP_ASSURE contenant des objets de type TYP_REMB et d'inserer cet objet dans la vue afin que cela insere de nouvelles lignes dans les tables assure et remboursement.
J'ai tenté un bête :
Code:
1 2
| a:=typ_assure('2760613055403', 'BOYER', 'MAUD', null);
insert into vassure values (a); |
Code:
1 2 3
|
Mais ça ne marche pas, dois je passer par un trigger [b]instead of[/b] ou y a t'il un autre moyen. |
Merci d'avance