0% ont trouvé ce document utile (0 vote)
71 vues12 pages

PL-SQL 5

Ce document décrit la création et l'utilisation des procédures et fonctions stockées dans Oracle. Il explique la différence entre procédures et fonctions, ainsi que la syntaxe pour les créer et les appeler.

Transféré par

younessehorra20
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)
71 vues12 pages

PL-SQL 5

Ce document décrit la création et l'utilisation des procédures et fonctions stockées dans Oracle. Il explique la différence entre procédures et fonctions, ainsi que la syntaxe pour les créer et les appeler.

Transféré par

younessehorra20
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

SMI-S5

SGBD ORACLE : Procédures & Fonctions

Pr. Issam QAFFOU

Laboratoire Ingénierie des Systèmes d’Information


Département d’Informatique
FSSM-UCA
2 Introduction

 Une procédure stockée ou une fonction est un bloc stocké


dans la base de données.
 Ce bloc peut être appelé par n’importe quel autre bloc
PL/SQL que ce soit anonyme ou stocké aussi.
 On peut appeler les procédures et les fonctions par « sous
programmes ».
 Une fonction ou une procédure stockée peut être appelée de
n’importe où: SQL*PLUS, Oracle Forms & Report ou de
l’intérieur d’un autre sous-programme.
3 Introduction

 Vous pouvez partitionner la partie logique de votre


application en utilisant les sous-programmes.
 Vous mettez toute la logique demandée pour l’accès aux
données dans la base de données.
 Vous mettez toutes les activités client dans la couche client.
 La différence entre une procédure et une fonction:
 Une procédure se comporte comme une commande SQL ou PL/SQL
(commit par exemple).
 Une fonction est une partie d’une expression qui a une valeur (substr
par exemple). Elle accepte des données et renvoie une valeur.
4 Création (Procédure stockée)

 Syntaxe:
CREATE [OR REPLACE] PROCEDURE <nom_procédure>
[(argument [IN|OUT|IN OUT] type [DEFAULT valeur]
...
argument [IN|OUT|IN OUT] type)]
IS|AS
<partie_déclaration>
BEGIN
<corps_procédure>
[EXCEPTION
<gestion d’exception>]
END;
 On utilise REPLACE pour remplacer une procédure qui existe déjà portant le
même non que la notre.
5 Création (Procédure stockée)

Liste d’arguments:
 Ce sont les arguments ou paramètres de la procédure. Vous
pouvez en déclarer autant que vous voulez.
 On déclare un argument suivi de son mode qui peut être:
 IN: pour les paramètres entrés seulement. Ne sera pas retourné dans le
résultat.
 OUT: pour les paramètres de sortie seulement.
 IN OUT: les deux; les paramètres peuvent être d’entrée et retournés en
résultat.
 Vous suivez le mode par le type de l’argument (number,
date, etc.).
6 Création (Procédure stockée)
 Paramètres actuels et formels:
 Les paramètres passés (fournis) lors de l’appel d’une procédure
s’appellent: paramètres actuels.
 Les paramètres utilisés dans la définition de la procédure s’appellent:
paramètres formels.
 Lors de l’exécution, les paramètres actuels sont copiés dans
les paramètres formels pour être utilisés dans le corps de la
procédure.
 Tout argument ayant le mode OUT ou IN OUT est alors copié
du paramètre formel vers le paramètre actuel quand la
procédure est terminée.
 N.B: Tout ce qui est déclaré au sein d’une procédure lui est
strictement propre.
7 Création (Procédure stockée)

 Exemple: pour éviter d’appeler insert into autant de fois


que de lignes qui existent dans une table pour la remplir,
vous pouvez utiliser une procédure stockée comme suit:
8 Création (Procédure stockée)

 Exemple (suite): il suffit d’appeler et exécuter cette


procédure là vous voulez par son nom et ses paramètres
actuels.
 Syntaxe:
debug(‘Mon programme’, ‘Mettre du texte …’);
 Exécution:
EXEC debug(‘Mon programme’, ‘Mettre du texte …’);

 La commande SQL*PLUS EXEC ne fait qu’encadrer le code


PL/SQL (dans ce cas l’appel de la procédure) avec un
BEGIN et END pour la rendre un bloc anonyme.
9 Création (Fonctions)

 La création d’une fonction est quasiment identique à celle


d’une procédure stockée, avec une simple différence c’est
qu’une fonction doit avoir une valeur de retour.
 Donc on l’affecte à une variable, par exemple:
Nom_cours := GetNom(p_ccode);
 La fonction GetNom prend un seul paramètre (le code du
cours) et retourne en résultat le nom du cours
correspondant.
 Une fonction peut être utilisée n’importe où avec une
expression: affectation, IF, traitement itératif, etc.
10 Création (Fonctions)

 Syntaxe: elle a la même syntaxe qu’une procédure mais on ajoute un


return
CREATE [OR REPLACE] Function <nom_fonction>
[(argument [IN|OUT|IN OUT] type [DEFAULT valeur]
...
argument [IN|OUT|IN OUT] type)]
RETURN <type_valeur_retournée>
IS|AS
<partie_déclaration>
BEGIN
<corps_fonction>
[EXCEPTION
<gestion d’exception>]
Return <valeur>;
END;
11 Création (Fonctions)

Exemple: une
fonction qui
calcule le
montant de frais
non payé
restant pour un
étudiant.
12 Création (Fonctions)

Exemple (suite): cette fonction peut être appelée


dans un block pl/sql comme suit:
begin
dbms_output.put_line(getMontantRestant(10));
end;
dans une requête SQL comme toute fonction standard:
select rollno, getMontantRestant(rollno)
from Etudiant;

Vous aimerez peut-être aussi