Créer une procédure stockée paramétrée dans MySQL

Créer une procédure stockée paramétrée dans MySQL

  1. 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, ou INOUT.
      • 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 :
    • Créer une procédure stockée paramétrée dans MySQL

    • Dans la syntaxe vous devez:
    • 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),…

      • 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),…



  2. Le paramètre IN

    • IN est le mode par défaut. Lorsque vous définissez un paramètre IN 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ètre IN.
    • 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“:
      • DELIMITER $
        CREATE PROCEDURE getApprenantsByGouv(
            IN p VARCHAR(20)
        )
        BEGIN
            SELECT * 
            FROM Apprenants
            WHERE gouv = p;
        END$
        Delimiter ;
      • 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 :
      • CALL getApprenantsByGouv('Nabeul');
      • É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.
  3. 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 :
      • DELIMITER $
        CREATE PROCEDURE PROCEDURE `getTotalApprenants`(
            OUT TotalApprenants int)
        BEGIN
            SELECT count(*) INTO TotalApprenants FROM Apprenants;
        END$
        Delimiter ;
      • Pour stocker la valeur renvoyée par la procédure, passez une variable de session nommée @TotalApprenants.
      • Créer une procédure stockée paramétrée dans MySQL

  4. Le paramètre INOUT

    • Un INOUT paramètre est une combinaison de paramètres IN et de OUT . Cela signifie que le programme appelant peut transmettre l’argument et que la procédure stockée peut modifier le paramètre INOUT 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
      • DELIMITER $
        CREATE PROCEDURE `sommeDeuxNombres`(IN num1 INT,IN num2 INT,OUT sot INT)
        BEGIN
            SET somme := num1 + num2;
        END$
        Delimiter ;

        Paramètres de procédure stockée MySQL