Bonjour,

Soit deux tables tout ce qu'il y a de plus relationnelles par exemple :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
a:=typ_assure('2760613055403', 'BOYER', 'MAUD', null);
insert into vassure values (a);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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