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 INest le mode par défaut. Lorsque vous définissez un paramètreINdans 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 
INest 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 
INde 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 
OUTpeut ê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 
OUTlorsqu’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 
INOUTparamètre est une combinaison de paramètresINet deOUT. Cela signifie que le programme appelant peut transmettre l’argument et que la procédure stockée peut modifier le paramètreINOUTet 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 ;
	
