Correction : exercice 1
La creation des types:
- create type t_persone as object(code number(4),nom varchar2(30),member function afficher return varchar2) not final;
- create type body t_persone as member function afficher return varchar2 is
begin
return self.nom;
end afficher;
end;
- create type t_linCmd as object(id number(4),total number(4,2),zone varchar2(30),
member procedure changer (a in number),
member procedure changer (b in varchar2));
- create or replace type body t_linCmd as
member
procedure changer (a in number) is
begin
self.id:=a;
end
changer;
member
procedure changer (b in varchar2) is
begin
self.zone:=b;
end
changer;
end;
/
- create type tab_linCmd as table of t_linCmd;
- create type t_Cmd;
- create type list_cmd as object (liste ref t_cmd);
- create type tab_cmd as table of list_cmd;
- create type t_Client under t_persone(email varchar2(30),cmdx tab_Cmd,
overriding member function
afficher return varchar2);
- create or replace type body t_Client as overriding member function afficher return varchar2 is
begin
return
self.nom||' '||self.email;
end
afficher;
end;
- create or replace type t_Cmd as object(code number(4),dateC date,Cltx ref t_Client,listCmd tab_linCmd);
La DESCRIPTION DES TYPES
SQL> desc t_client
t_client constitue
une extension de U.T_PERSONE
Nom NULL
? Type
-----------------------------------------
-------- ----------------------------
CODE
NUMBER(4)
NOM
VARCHAR2(30)
EMAIL
VARCHAR2(30)
CMDX
TAB_CMD
METHOD
------
MEMBER FUNCTION AFFICHER RETURNS VARCHAR2
SQL> desc t_cmd
Nom NULL
? Type
-----------------------------------------
-------- ----------------------------
CODE NUMBER(4)
DATEC
DATE
CLTX
REF OF T_CLIENT
LISTCMD
TAB_LINCMD
SQL> desc t_lincmd
Nom NULL ? Type
-----------------------------------------
-------- ----------------------------
ID
NUMBER(4)
TOTAL
NUMBER(4,2)
ZONE VARCHAR2(30)
METHOD
------
MEMBER PROCEDURE
CHANGER
Nom d'argument Type E/S par défaut ?
------------------------------
----------------------- ------ --------
A NUMBER IN
METHOD
------
MEMBER PROCEDURE CHANGER
Nom d'argument Type E/S par défaut ?
------------------------------
----------------------- ------ --------
B VARCHAR2 IN
La creation des tables
- create table Client of t_Client(constraint pk_code primary key(code))
nested table
cmdx store as table_cmd;
- create table cmd of t_cmd (constraint pk_code_cmd primary key(code))
nested table listcmd store as
table_linecmd;
Correction :
exercice 2
create type t_formation as object( code
number,module clob);
create table formation of t_formation(constraint
pk_f primary key(code));
insert into formation values(10,'1. Le
langage Java est un langage de programmation informatique orient‚ objet cr‚‚
par James Gosling et Patrick Naughton, employ‚s de Sun Microsystems, ...');
insert into formation values(20,EMPTY_CLOB());
SQL> insert into formation values(20,'Oracle Database est un systŠme de gestion de base
de donn‚es relationnel (SGBDR) qui depuis l'introduction du support du modŠle
objet dans sa version 8 peut ˆtre aussi qualifi‚ de systŠme de gestion de base
de donn‚es relationnel-objet (SGBDRO). Fourni par Oracle Corporation, il a ‚t‚
d‚velopp‚ par Larry Ellison, accompagn‚ d'autres personnes telles que Bob Miner
et Ed Oates.');
Correction : exercice 3
Dans un premier temps, créons le répertoire lesCVs sur C :
Ensuite, plaçons les CVs des candidats dans ce répertoire.
Par la suite, déclarons l’alias logique vers ce répertoire :
create directory alias as 'c:\les_CVs';
maintenant, créons la table objet Etudiant:
create type
t_etudiant as object(code number, nom varchar2(10),
prenom varchar2(10), cv bfile);
create table etudiant of t_etudiant(constraint
pk_e primary key(code));
Finalement, nous insérons les deux lignes souhaitées
insert into etudiant values(10,'sami','reda',bfilename('alias','cv10.docx'));
insert into etudiant values(11,'naya','nour',bfilename('alias','cv11.pdf'));
Aucun commentaire:
Enregistrer un commentaire