Vous êtes sur la page 1sur 4

Universit CADI AYYAD

Ecole Nationale des Sciences Appliques


ENSA-Marrakech

TP1 : Les Procdures

Un organisme bancaire dsire automatiser la gestion des comptes clients en sappuyant sur
une base de donnes ayant le MCD suivant :
Operations

Comptes

Clients

Num_operation
Libelle_operation
Montant_operation
Date_operation

Num_compte
Libelle_compte
Date_commande_chequier
Solde_compte
Decouvert_autoris

Num_client
Nom_client
Adresse_client
Mot_de_passe
date_derniere_consultation

secteur

1,1

1,n

1,1

1,n

Posseder

1,1

1,1
Effectue

Etre

Avoir pour

0,n

0,n

Type_Compte

Type_Operation

Type_Cpte
Intitule_compte

Structure de chaque table mise en uvre :


CLIENTS
Num_Client
NUMBER
Nom_Client
VARCHAR(15)
Adresse_Client
VARCHAR(30)
Mot_de_passe
VARCHAR(10)
Date_derniere_consultation DATE
Secteur
NUMBER
COMPTES
Num_Compte
NUMBER
Libelle_compte
VARCHAR(20)
Date_Commande_chequier
DATE
Solde_Compte
NUMBER(10,2)
Decouvert_autorise
NUMBER(8,2)
Num_Client
NUMBER
Type_Compte
VARCHAR(3)
OPERATIONS
Num_Operation
Libelle_Operation
Montant_Operation

NUMBER
VARCHAR(20)
NUMBER(8,2)

Type_Op

Squence

Squence

Squence

Date_Operation
Num_Compte
Type_Operation

DATE
NUMBER
VARCHAR(10)

TYPE_COMPTE
Type_Compte
Intitule_Compte

VARCHAR(3)
VARCHAR(20)

TYPE_OPERATION
Type_Operation

VARCHAR(10)

-- virement ou retrait

Le jeu dessai pour la base de donnes initiale est sous forme de script
Utilisation des squences Oracle :
CREATE SEQUENCE [schema.] sequence
[ INCREMENT BY integer
| START WITH integer
| {MAXVALUE integer | NOMAXVALUE}
| {MINVALUE integer | NOMINVALUE}
| {CYCLE | NOCYCLE}
...

Une fois cre une squence se manipule via deux directives :


<squence>.CURRVAL : qui retourne la valeur courante de la squence
<squence>.NEXTVAL : qui incrmente la squence et retourne la nouvelles valeur de
celle-ci
Il faut utiliser au moins une fois NEXTVAL avant dutiliser CURRVAL dans une mme
session (SQL*PLUS, bloc PL/SQL ou programme). Si non on aura lerreur suivante :

Exemples de cration de sequence :


create sequence sqNumclient increment by 1 start with 1 ;
create table client(no NUMBER(5) primary key, nom varchar(20)) ;
insert into client values(sqNumclient.nextval,'toto') ;
- Pour pouvoir modifier une squence de son schma il faut avoir le privilge ALTER
SEQUENCE
2

NB : la clause START WITH ne peut pas tre modifi sans supprim et recrer la
squence
Pour modifier une squence dans un schma diffrent il faut avoir le privilge ALTER
ANY SEQUENCE
Suppression dune squence :
DROP SEQUENCE [schma.]nomSquence ;
Exemple : DROP SEQUENCE sqNumclient ;

PS : Pour rinitialiser une squence SEQ cre travers la commande :


CREATE SEQUENCE SEQ;

Il suffit :
1- de voir sa valeur actuelle via la commande :
SELECT SEQ.CURRVAL FROM DUAL;

2- Ensuite rinitialiser la squence 1 : modifier la squence en injectant l'option


increment by en ajoutant en valeur -VAL (la valeur actuelle - 1) :
== > ALTER SEQUENCE SEQ INCREMENT by -VAL;
avec VAL= <la valeur actuelle de la squence -1>

3- Ensuite lancer la commande qui va rinitialiser la squence :


SELECT SEQ.NEXTVAL FROM DUAL;

4- Enfin rtablir lincrment de la squence :


ALTER SEQUENCE SEQ INCREMENT by 1;

Travail effectuer :
Partie I :
1- Cration de tablespace de travail : Crre un tablespace userSite1
2- Crer un user (userSite1) . Dans la cration de ce user lui attribu le tablespace
userSite1 comme tablespace par dfaut
3- Donner les droits ncesaires au user cre (userSite1) afin de pouvoir se connecter et
crer les tables. Ajouter dautres droits au cas de besoin.
4- Dans le schma de userSite1 :
a- Crer les squences :
Pour la table clients on peut lappeler : sqNumClient
Pour la table compte on peut lappeler sqNumCompte
Pour la table compte on peut lappeler sqNumOperation
b- Crer les tables
On peut utiliser un script (voir script CreationObjets.bat)
Partie II :
1- Ecriture dun ensemble de procdures et fonctions permettant de grer les comptes
clients de la banque. Laffichage peut se faire avec la commande :
DBMS_OUTPUT.PUT_LINE (chane de caractres); en mettant la clause SET SERVEROUT ON
Le code des procdures et fonction doit tre crits dans des fichiers. Crer autant de fichiers
que de procdures tester.

Ecrire les procdures suivantes :


1-1 Procdure AJ_CLIENT
- Paramtres en Entre : dfinir (date_derniere_consultation peut tre mise
null)
- Action :
Insertion du nouveau client dans la table CLIENTS
- Exceptions : prciser
- Affichages : Client cre
1-2 Procdure AJ_COMPTES
- Paramtres en Entre : dfinir (date_commande_chequier null)
- Action :
Insertion du nouveau compte dans la table COMPTES
- Exceptions : Num_client inconnu, Type_Compte inconnu,
- Affichages : Compte cre ou erreurs exceptions
1-3 Procdure AJOUT_OPERATIONS :
- Paramtres en entre : dfinir . avec date_operation = SYSDATE
- Action : action sur la table OPERATION, dbuter au crditer le compte
- Exceptions : prciser (Num_compte inconnu, Type_operation inconnu, test sur
decouvert_autorise de la table COMPTES )
- Affichages : opration satisfaites ou erreurs exceptions
1-4 Procdure VIREMENT :
- Paramtres en Entre : Num_Compte crditer, Num_Compte dbiter (si virement
dun compte un autre), montant de lopration.
Vous prenez la date du jour pour la date de lopration (date_operation = SYSDATE)
- Action : 2 ajouts dans OPERATIONS , mise jour des Solde_Compte
- Exceptions :
Num_compte ( dbiter ou crditer) inconnu, test du dcouvert autoris
- Affichages : exemple transaction russie ou affichage erreurs exceptions
1-5 Procdure RELEVE_COMPTE
- Paramtres en Entre :
Num_Compte
- Action : affichage de toutes les informations utiles
Exemple : afichage du Nom_Client, Adresse_Client et Libelle_compte,
affichage des Oprations sur ce compte tries par date_operation
croissantes, affichage solde_compte
- Exceptions : Num_compte inconnu
- Affichages : affichage des informations cites ci-dessus ou des erreurs exceptions

Rsultats rendre
Un rapport avec une trace cran prouvant la bonne marche de chacune des
Procdures. Les procdures doivent tre crites dans des fichiers pour utilisations
ultrieur.