TP3 PLSQL Correction .pdf


Nom original: TP3 PLSQL Correction.pdf
Titre: Microsoft Word - TP3 PLSQL corrigé.docx
Auteur: sony14white

Ce document au format PDF 1.4 a été généré par Microsoft Word - TP3 PLSQL corrigé.docx / ScanSoft PDF Create! 5, et a été envoyé sur fichier-pdf.fr le 16/03/2012 à 07:12, depuis l'adresse IP 197.28.x.x. La présente page de téléchargement du fichier a été vue 5301 fois.
Taille du document: 52 Ko (3 pages).
Confidentialité: fichier public


Aperçu du document


TP3 PL/SQL
On rappelle la table "clients" suivante :
Num : clé primaire, entier, 3 chiffres
Solde : réel
Nom : chaîne de caractères (longueur 30)
Prénom : chaîne de caractères (longueur 30)

Ecrivez un block PL/SQL permettant de :
1.

Utilisation les propriétés des curseurs implicites :
Créer un programme qui augmente les soldes inférieurs à 300 de 5%. Afficher
le nombre d’enregistrements modifiés. Gérer l’exception associée si aucun
enregistrement n’est trouvé.

declare
v_row_updated number;
exp1 exception;
begin
update clients set solde=solde*1.05
where solde<300;
v_row_updated:= sql%rowcount;
if v_row_updated=0 then
raise exp1;
end if;
dbms_output.put_line('Le nombre d"enregistrements mis à jour
est: '||v_row_updated);
exception
when exp1 then
dbms_output.put_line('Pas d"enregistrements mis à jour');
end;
2.

Utilisation des curseurs explicites :
Créer une procédure qui affiche les coordonnées des clients ayant des soldes
inférieurs à 800. Utiliser deux méthodes pour parcourir le curseur : utiliser
dans un premier temps la boucle for et loop puis dans un deuxième temps,
utiliser le mot clé fetch. Gérer les éventuelles exceptionnelles rencontrées.

1

CREATE OR REPLACE PROCEDURE liste_nom_clients1
IS
BEGIN
DECLARE
e_exp1 EXCEPTION;
v_nblignes number:=0;
v_number number;
CURSOR c_nom_clients IS
select nom,prenom, solde from clients where solde<800;
BEGIN
FOR le_client IN c_nom_clients LOOP
v_nblignes:= v_nblignes+1;
dbms_output.put_line('--- Nom: ' || UPPER(le_client.nom) ||'--- Prénom : ' ||
le_client.prenom
|| '--- Solde :' || le_client.solde);
END LOOP;
if v_nblignes=0
then raise e_exp1;
end if;
EXCEPTION
WHEN e_exp1 THEN dbms_output.put_line(' ---- aucune donnée trouvée ---- ' );
END;
END;

CREATE OR REPLACE PROCEDURE liste_nom_clients2
IS
BEGIN
DECLARE
v_number number;
e_exp1 EXCEPTION;
CURSOR c_nom_clients IS
select nom,prenom, solde from clients where solde<800;
/*v_nom varchar2(30);
v_prenom varchar2(30);
v_solde number;
ou*/
v_le_client c_nom_clients%rowtype;
BEGIN
OPEN c_nom_clients;
LOOP
--FETCH c_nom_clients INTO v_nom, v_prenom, v_solde;
-- ou
FETCH c_nom_clients INTO v_le_client;
v_number:= c_nom_clients%rowcount;
IF v_number=0 THEN
RAISE e_exp1;
END IF;
EXIT WHEN c_nom_clients%NOTFOUND ;
/*dbms_output.put_line('--- Nom: ' || UPPER(v_nom) ||'--- Prénom : ' ||
v_prenom
|| '--- Solde :' || v_solde);
ou*/

2

dbms_output.put_line('--- Nom: ' || UPPER(v_le_client.nom) ||'--- Prénom :
' || v_le_client.prenom
|| '--- Solde :' || v_le_client.solde);
END LOOP;
CLOSE c_nom_clients;
EXCEPTION
WHEN e_exp1 THEN dbms_output.put_line(' ---- aucune donnée trouvée ---- '
);
END;
END;
/

3.

Utilisation des curseurs paramétrés :
Créer un programme qui affiche toutes les données d’un numéro d’employé
donné. Gérer les éventuelles exceptionnelles rencontrées.

DECLARE
v_number number;
e_exp1 EXCEPTION;
CURSOR c_clients(numero number) IS
SELECT * FROM clients WHERE num=numero;
v_client c_clients%ROWTYPE;
BEGIN
v_number:=&val_a_donner;
OPEN c_clients(v_number);
LOOP
FETCH c_clients INTO v_client;
IF c_clients%NOTFOUND THEN
RAISE e_exp1;
END IF;
EXIT WHEN c_clients%NOTFOUND ;
dbms_output.put_line('--- Nom: ' || UPPER(v_client.nom) ||'--- Prénom : ' ||
v_client.prenom
|| '--- Solde :' || v_client.solde);
END LOOP;
CLOSE c_clients;
EXCEPTION
WHEN e_exp1 THEN dbms_output.put_line(' ---- aucune donnée trouvée ---- ' );
END;

3


Aperçu du document TP3 PLSQL Correction.pdf - page 1/3

Aperçu du document TP3 PLSQL Correction.pdf - page 2/3

Aperçu du document TP3 PLSQL Correction.pdf - page 3/3




Télécharger le fichier (PDF)




Sur le même sujet..





Ce fichier a été mis en ligne par un utilisateur du site. Identifiant unique du document: 00101093.
⚠️  Signaler un contenu illicite
Pour plus d'informations sur notre politique de lutte contre la diffusion illicite de contenus protégés par droit d'auteur, consultez notre page dédiée.