TP3 PLSQL Correction .pdf


Nom original: TP3 PLSQL Correction.pdfTitre: Microsoft Word - TP3 PLSQL corrigé.docxAuteur: 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 5113 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


TP3 PLSQL Correction.pdf - page 1/3


TP3 PLSQL Correction.pdf - page 2/3


TP3 PLSQL Correction.pdf - page 3/3


Télécharger le fichier (PDF)


TP3 PLSQL Correction.pdf (PDF, 52 Ko)

Télécharger
Formats alternatifs: ZIP



Documents similaires


tp3 plsql correction
tp2 plsql correction
programmation pl sql bases du langage
create or replace trigger triggeer
psppesymfony
15 50 front seat memory potentiometers

Sur le même sujet..