Créer une procédure stockée paramétrée dans MySQL
Créer une procédure stockée paramétrée dans MySQL
-
Introduction
- Les procédures stockées MySQL peuvent avoir des paramètres. Ces paramètres rendent la procédure stockée plus utile et réutilisable.
- Un paramètre d’une procédure stockée a l’un des trois modes suivants :
IN
,OUT
, ouINOUT
. - Lorsque nous déclarons un paramètre de type
IN
, l’application doit passer un argument à la procédure stockée. C’est un mode par défaut. - Le paramètre de type
OUT
, la procédure stockée renvoie une sortie finale générée par les instructions SQL. - Lorsque nous déclarons le paramètre de type
INOUT
, l’application doit passer un argument, et basé sur l’argument d’entrée ; la procédure renvoie la sortie à l’application. - Lorsque nous créons une procédure stockée, les paramètres doivent être spécifiés entre parenthèses. La syntaxe est la suivante :
- Dans la syntaxe vous devez:
- Spécifier le sens : entrant, sortant, ou les deux. Si aucun sens n’est donné, il s’agira d’un paramètre IN par défaut.
- Spécifier le nom du paramètre pour le désigner à l’intérieur de la procédure
- Spécifier le type du paramètre INT, VARCHAR(10),…
-
Le paramètre
IN
IN
est le mode par défaut. Lorsque vous définissez un paramètreIN
dans une procédure stockée, le programme appelant doit passer un argument à la procédure stockée.- De plus, la valeur d’un paramètre
IN
est protégée. Cela signifie que même si vous modifiez la valeur du paramètre IN dans la procédure stockée, sa valeur d’origine reste inchangée après la fin de la procédure stockée. En d’autres termes, la procédure stockée ne fonctionne que sur la copie du paramètreIN
. - Exemple de paramètre
IN
- L’exemple suivant crée une procédure stockée qui recherche tous les apprenants habitant dans une gouvernorat spécifiée par le paramètre d’entrée « p« :
- Dans cet exemple, « p » est le paramètre
IN
de la procédure stockée. - Supposons que vous souhaitiez trouver des apprenants situés à « nabeul », vous devez transmettre un argument (‘Nabeul’) à la procédure stockée, comme indiqué dans la requête suivante :
- Étant donné que le ‘p‘ est le paramètre IN, vous devez passer un argument. Si vous ne le faites pas, vous obtiendrez une erreur.
-
Le paramètre
OUT
- La valeur d’un paramètre
OUT
peut être modifiée à l’intérieur de la procédure stockée et sa nouvelle valeur est renvoyée au programme appelant. - Notez que la procédure stockée ne peut pas accéder à la valeur initiale du paramètre
OUT
lorsqu’elle démarre. - Exemple de paramètre
OUT
- Supposons que nous voulions obtenir le nombre d’apprenants. « TotalApprenants » est un paramètre de sortie et le type de données est un entier.
- Le nombre d’apprenants est affecté à la variable OUT ( « TotalApprenants » ) à l’aide du mot-clé INTO. Le code de la procédure est le suivant :
- Pour stocker la valeur renvoyée par la procédure, passez une variable de session nommée
@TotalApprenants
. -
Le paramètre
INOUT
- Un
INOUT
paramètre est une combinaison de paramètresIN
et deOUT
. Cela signifie que le programme appelant peut transmettre l’argument et que la procédure stockée peut modifier le paramètreINOUT
et renvoyer la nouvelle valeur au programme appelant. - Exemple de paramètre
INOUT
- Exemple de programme utilisant les types de paramètres IN, OUT dans la procédure stockée MYSQL
Son sens : entrant, sortant, ou les deux. Si aucun sens n’est donné, il s’agira d’un paramètre IN par défaut.
Son nom : indispensable pour le désigner à l’intérieur de la procédure.
Son type : INT, VARCHAR(10),…
DELIMITER $
CREATE PROCEDURE getApprenantsByGouv(
IN p VARCHAR(20)
)
BEGIN
SELECT *
FROM Apprenants
WHERE gouv = p;
END$
Delimiter ;
CALL getApprenantsByGouv('Nabeul');
DELIMITER $
CREATE PROCEDURE PROCEDURE `getTotalApprenants`(
OUT TotalApprenants int)
BEGIN
SELECT count(*) INTO TotalApprenants FROM Apprenants;
END$
Delimiter ;
DELIMITER $
CREATE PROCEDURE `sommeDeuxNombres`(IN num1 INT,IN num2 INT,OUT sot INT)
BEGIN
SET somme := num1 + num2;
END$
Delimiter ;