0% ont trouvé ce document utile (0 vote)
21 vues14 pages

Programmation PL/SQL : Procédures et Exceptions

Ce document présente les fondements de la programmation en PL/SQL Oracle, en se concentrant sur les procédures, fonctions et exceptions. Il explique comment créer et utiliser des blocs anonymes et nommés, ainsi que le traitement des exceptions, tant prédéfinies que personnalisées. Des exemples de code illustrent les concepts abordés, tels que la déclaration de procédures et de fonctions avec ou sans paramètres.

Transféré par

Tasnim Mehrabi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
21 vues14 pages

Programmation PL/SQL : Procédures et Exceptions

Ce document présente les fondements de la programmation en PL/SQL Oracle, en se concentrant sur les procédures, fonctions et exceptions. Il explique comment créer et utiliser des blocs anonymes et nommés, ainsi que le traitement des exceptions, tant prédéfinies que personnalisées. Des exemples de code illustrent les concepts abordés, tels que la déclaration de procédures et de fonctions avec ou sans paramètres.

Transféré par

Tasnim Mehrabi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Fondements des bases de données

Programmation en PL/SQL Oracle – procédures, fonctions et


exceptions

Équipe pédagogique BD

[Link]
Version du 13 octobre 2016
Bloc anonyme ou nommé

I Un bloc anonyme PL/SQL est un bloc DECLARE ...BEGIN ...END


comme dans les exemples précédents.
I On peut exécuter directement un bloc PL/SQL anonyme.
I On passe plutôt une procédure ou une fonction nommée pour
réutiliser le code.
Procédure sans paramètre

Exemple
CREATE OR REPLACE PROCEDURE list_nom_emps I S
BEGIN
DECLARE
CURSOR c_nom_emps I S
SELECT nom , a d r e s s e
FROM emp ;
BEGIN
FOR v_emp IN c_nom_emps LOOP
dbms_output . p u t _ l i n e (
’ C l i e n t ␣ : ␣ ’ | | UPPER( v_emp . nom ) | |
’ ␣ V i l l e ␣ : ␣ ’ | | v_emp . a d r e s s e ) ;
END LOOP ;
END;
END;
/

CALL list_nom_emps ( ) ;
Procédure avec paramètres

Exemple
CREATE OR REPLACE PROCEDURE
l i s t e _ n o m _ e m p s ( v i l l e IN v a r c h a r 2 , v _ r e s u l t OUT number ) I S
BEGIN
BEGIN
SELECT COUNT( ∗ ) INTO v _ r e s u l t
FROM emp
WHERE a d r e s s e LIKE ( ’% ’ | | v i l l e | | ’% ’ ) ; IN lecture seule
END; OUT écriture seule
END;
/ IN OUT lecture et
écriture
DECLARE
v _ r e s u l t number ;
BEGIN
liste_nom_emps ( ’ Manchester ’ , v _ r e s u l t ) ;
dbms_output . p u t _ l i n e ( v _ r e s u l t ) ;
END;
/
Fonctions sans paramètre

Exemple
CREATE OR REPLACE FUNCTION nb_emps
RETURN NUMBER −− Type de r e t o u r
IS
BEGIN
DECLARE
i NUMBER;
BEGIN
SELECT COUNT( ∗ ) INTO i
FROM emp ;
RETURN i ;
END;
END;
/

DECLARE
BEGIN
dbms_output . p u t _ l i n e ( nb_emps ( ) ) ;
END;
/
Fonctions avec paramètres
Exemple
CREATE OR REPLACE FUNCTION e u r o _ t o _ f r ( v_somme IN number )
RETURN NUMBER
IS
BEGIN
DECLARE
t a u x CONSTANT number := 6 . 5 5 9 5 7 ;
BEGIN
RETURN v_somme ∗ t a u x ;
END;
END;
/

DECLARE
BEGIN
dbms_output . p u t _ l i n e ( e u r o _ t o _ f r ( 1 5 . 2 4 ) ) ;
END;
/

Seuls les paramètres IN (en lecture seule) sont autorisés


Un peu plus ...

I Les procédures et fonctions peuvent être utilisées dans d’autres


procédures ou fonctions ou dans des blocs PL/SQL anonymes
I Les fonctions peuvent aussi être utilisées dans les requêtes
I Table système contenant les procédures et fonctions : user_source
SELECT * FROM user_source

Pratique
I Déclaration d’une variable globale avec le préfixe « : »
I Description des paramètres : DESC nom_procedure
I Suppression de procédures ou fonctions :
I DROP PROCEDURE nom_procedure
I DROP FUNCTION nom_fonction
I DUAL est une pseudo table avec une seule colonne.
Les exceptions

Une exception est une erreur qui survient durant une exécution, elle est
soit :
I prédéfinie par Oracle,
I définie par le programmeur.

Exceptions prédéfinies
NO_DATA_FOUND quand SELECT ...INTO ne retourne aucune ligne.
TOO_MANY_ROWS quand SELECT ...INTO retourne plusieurs lignes.
VALUE_ERROR érreur numérique.
ZERO_DIVIDE division par zéro
OTHERS toutes erreurs non interceptées.
Traitement des exceptions

Saisir une exception


I Une exception ne provoque pas nécessairement l’arrêt du
programme : elle peut être saisie par une partie EXCEPTION.
I Une exception non saisie remonte dans la procédure appelante (où
elle peut être saisie).

Exemple
BEGIN
...
EXCEPTION
WHEN NO_DATA_FOUND THEN
...
WHEN TOO_MANY_ROWS THEN
...
WHEN OTHERS THEN −−o p t i o n n e l
...
END;
Exceptions utilisateur
I Elles doivent être déclarées avec le type EXCEPTION
I On les lève avec l’instruction RAISE
I On peut aussi utiliser raise_application_error quand on veut
que l’exception remonte à l’utilisateur (sans la saisir)

Exemple
DECLARE
e_custom EXCEPTION ;
PRAGMA EXCEPTION_INIT ( e_custom , −20001 ) ;
BEGIN
r a i s e _ a p p l i c a t i o n _ e r r o r ( −20001 , ’My␣ custom ␣ e r r o r ’ ) ;
−− RAISE e_custom ;
EXCEPTION
WHEN e_custom THEN
dbms_output . p u t _ l i n e ( ’A␣ / custom / ␣ e r r o r ␣ was ␣ e n c o u n t e r e d −␣ ’
| | SQLCODE | | ’ ␣ : ␣ ’ | | SQLERRM ) ;
WHEN OTHERS THEN
dbms_output . p u t _ l i n e ( ’ An␣ e r r o r ␣ was ␣ e n c o u n t e r e d ␣−␣ ’
| | SQLCODE | | ’ ␣ : ␣ ’ | | SQLERRM ) ;
END;
/
Exceptions utilisateur
Exemple
DECLARE
v _ s a l a i r e emp . s a l%TYPE ;
e _ t r o p _ b a s EXCEPTION ;
PRAGMA EXCEPTION_INIT ( e _t rop _b as , −20001 ) ;
BEGIN
SELECT s a l INTO v _ s a l a i r e
FROM emp
WHERE matr = 1 ;
I F v _ s a l a i r e < 2000 THEN
RAISE e _ t r o p _ b a s ;
END I F ;
EXCEPTION
WHEN e _ t r o p _ b a s THEN
dbms_output . p u t _ l i n e ( ’A␣ / custom / ␣ e r r o r ␣ was ␣ e n c o u n t e r e d ␣−␣ ’
| | SQLCODE | | ’ ␣ : ␣ s a l a i r e ␣ t r o p ␣ b a s ’ ) ;
WHEN OTHERS THEN
dbms_output . p u t _ l i n e ( ’ An␣ e r r o r ␣ was ␣ e n c o u n t e r e d ␣−␣ ’
| | SQLCODE | | ’ ␣ : ␣ ’ | | SQLERRM ) ;
END;
/
Fin du cours.

Vous aimerez peut-être aussi