Vous êtes sur la page 1sur 21

PL/SQL

Les sous programme oracle


Introduction:

Comme tout langage de programmation, PL/SQL offre la possibilité de


travailler avec des sous-programmes, appelés des fonctions et procédures
stockées.
Il faut savoir que toute procédure ou fonction créée devient un objet
stocké dans la base (similaire a une table ou une vue par exemple).
Elles sont donc sensibles à la notion de droit: leur créateur peut indiquer
les utilisateurs qui peuvent les manipuler.
Les procédures:
Une procédure est un sous programme qui exécute certains instructions et
peut accepter des paramètres (arguments).
Déclaration d’une procédure :
Syntaxe:
Create or replace procédure nom_proc(param1 IN type1, param2 OUT type2,….)
AS
--Déclaration des variables locales
BEGIN
--Instructions
EXCEPTION
--Traitement des exceptions
END;
CREATE OR REPLACE PROCEDURE /∗ nom ∗/ ( /∗ paramètre s ∗/ ) IS
/∗ déclaration des variables locales ∗/
BEGIN
/∗ i n s t r u c t i o n s ∗/
END;
les paramètres sont une simple liste de couples nom type. Par exemple, la procédure suivante affiche
un compte `a rebours.
CREATE OR REPLACE PROCEDURE compteARebours ( n NUMBER) IS
BEGIN
IF n >= 0 THEN
DBMS_OUTPUT . PUT_LINE ( n ) ;
compteARebours ( n − 1 ) ;
END IF ;
END;
Invocation
En PL/SQL, une procédure s’invoque tout simplement avec son nom. Mais
sous SQL+, on doit utiliser le mot-clé CALL. Par exemple, on invoque le
compte `a rebours sous SQL+ avec la commande CALL
compteARebours(20).
Passage de paramètres:
Oracle permet le passage de paramètres par référence. Il existe trois types
de passage de paramètres :
– IN : passage par valeur
– OUT : aucune valeur passée, sert de valeur de retour
– IN OUT : passage de paramètre par référence.
Par défaut, le passage de paramètre se fait de type IN
CREATE OR REPLACE PROCEDURE incr ( val IN OUT NUMBER) IS
BEGIN
val := val + 1 ;
END;
Les fonctions
Les fonctions PL/SQL sont des éléments clés du langage de
programmation PL/SQL, qui est utilisé pour interagir avec les bases de
données Oracle. Les fonctions sont des routines programmables qui
sont utilisées pour effectuer des tâches spécifiques dans une base de
données Oracle. Elles sont écrites en utilisant le langage de
programmation PL/SQL, qui est une extension du langage SQL utilisé
pour interagir avec les bases de données relationnelles.
Fonction du PL/SQL:
Elles sont généralement utilisées pour effectuer des calculs, des
conversions de données ou des opérations de recherche sur des données
stockées dans une base de données Oracle.
Les fonctions PL/SQL peuvent prendre des paramètres en entrée et
retourner des valeurs.
Voici un exemple simple de fonction PL/SQL qui retourne
la somme de deux nombres :

Cette fonction prend deux nombres en entrée et retourne


leur somme. Elle peut être appelée dans une requête SQL
ou dans une autre fonction PL/SQL pour effectuer des
calculs.
Appel des fonctions:
Les fonctions PL/SQL sont appelées dans une requête SQL en utilisant la
syntaxe suivante :

Cette requête appelle le fonction « add numbers » avec les paramètres 10


et 20 puis retourne le résultat 30
Avantages des fonctions PL/SQL:
Réutilisabilité : les fonctions PL/SQL peuvent être utilisées dans
d'autres fonctions, procédures ou requêtes SQL, ce qui réduit la
duplication de code et facilite la maintenance du code.
Modularité : les fonctions PL/SQL permettent de diviser le code en
modules logiques et de simplifier le code.
Performances : les fonctions PL/SQL peuvent être utilisées pour
effectuer des calculs complexes sur les données stockées dans une base
de données Oracle, ce qui peut améliorer les performances en évitant de
transférer des données vers une application tierce.
Les curseurs:

Définition:
Un curseur est une zone de mémoire privée, temporairement
allouée dans la zone globale de la session utilisateur ,qui est utilisée
pour traiter les instructions SQL.

Déclaration:
CURSOR /∗ nomcurseur ∗/ IS /∗ r e q u ˆe t e ∗/ ;
Ouverture:
OPEN /∗ nomcurseur ∗/ ;
Les curseurs:

• Définition:

Un curseur est une zone de mémoire privée, temporairement allouée dans la zone globale de
la session utilisateur ,qui est utilisée pour traiter les instructions SQL.

• Déclaration:

CURSOR /∗ nomcurseur ∗/ IS /∗ r e q u ˆe t e ∗/ ;

• Ouverture:

OPEN /∗ nomcurseur ∗/ ;
Les curseurs paramétrés
Lecture d’une ligne

Une fois ouvert, le curseur contient toutes les lignes du


resultat de la requˆete On les r´ecup`ere une par une en
utilisant le mot-cl´e FETCH :

La liste de variables peut etre remplacee par une structure de


type nom_curseur%ROWTYPE. Si la lecture de la ligne
echoue, parce qu’il n’y a plus de ligne a lire, l’attribut
%NOTFOUND prend la valeur vrai.
Fermeture

Apres utilisation, il convient de fermer le curseur.

CLOSE /∗ nomcurseur ∗/ ;

Completons notre exemple,


Boucle FOR

Il existe une boucle FOR se chargeant de l’ouverture, de la


lecture des lignes du curseur et de sa fermeture,

FOR ligne IN emp_cur LOOP


/∗ Tra i temen t ∗/
END LOOP ;

Par exemple,
Introduction :

Dans les curseurs précédents, les ordres SQL étaient fixes et les
curseurs sont exécutés avec une seule valeur. Or, il est possible de
spécifier un curseur avec des paramètres dans lesquels on passe des
valeurs.
Avec le curseur paramétré, on peut réutiliser un même curseur dans le
même bloc avec des valeurs différentes.
Définition :
Les paramètres du curseur sont de deux formes :
Paramètre formel
On appelle paramètres formels les paramètres dont les identificateurs
sont spécifiés dans la déclaration du curseur. La spécification des
paramètres formels indique leur nom et leur type. Dans le texte du
curseur, l’instruction SQL fait référence aux paramètres formels.
Paramètre effectif
Il s’agit de la variable, expression ou valeur fournie lors de l’ouverture d’un
curseur. Ces valeurs peuvent être des variables PL/SQL ou des variables
externes.
Déclaration :

CURSOR cursor_name (
parameter_name datatype := default_value,
parameter_name datatype := default_value,
Un curseur paramétré peut avoir des valeurs par défaut pour ses paramètres,
...
)comme
IS indiqué ci-dessous :
cursor_query;

Vous aimerez peut-être aussi