Mysql
 sql >> Base de données >  >> RDS >> Mysql

Procédure stockée MySQL avec paramètres

Parfois, vous devrez peut-être transmettre une entrée à une procédure stockée dans MySQL. Dans cet article, nous verrons comment créer une procédure stockée MySQL avec des paramètres et les différents types de paramètres pris en charge dans les procédures stockées.

Procédure stockée MySQL avec paramètres

Voici les étapes pour créer une procédure stockée avec des paramètres. MySQL prend en charge 3 types de paramètres de procédure stockée - IN, OUT et INOUT. Examinons chacun d'eux en détail

EN – C'est le mode par défaut. Dans ce mode, l'instruction d'appel doit transmettre l'argument à la procédure stockée. De plus, la valeur d'un paramètre de type IN est protégée, ce qui signifie que même si vous modifiez sa valeur à l'intérieur de la procédure stockée, elle restera inchangée en dehors de celle-ci.

OUT - La valeur d'un paramètre OUT peut être modifiée dans la procédure stockée et sa nouvelle valeur sera renvoyée à l'instruction d'appel.

INOUT – Dans ce cas, l'instruction d'appel peut transmettre un argument, et la procédure stockée peut modifier cette valeur et la retransmettre à l'instruction d'appel.

Voici la syntaxe d'une procédure stockée avec des paramètres dans MySQL.

[IN | OUT | INOUT] parameter_name datatype[(length)]

Dans la déclaration ci-dessus, nous spécifions d'abord le type de paramètre, puis le nom du paramètre et le type de colonne.

Procédure stockée MySQL avec exemples de paramètres

Voyons quelques exemples de procédure stockée avec paramètres.

Paramètre IN

Voici la requête SQL pour créer une procédure stockée avec le paramètre IN.

mysql> DELIMITER //

mysql> CREATE PROCEDURE get_product(
       IN prod_id int
       )
       BEGIN
       SELECT *
        FROM products
       WHERE product_id = prod_id;
       END //

mysql> DELIMITER ;
mysql> call get_product(1);
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

mysql> call get_product();
ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE sample.get_product; expected 1, got 0

Ci-dessus, nous avons défini un paramètre de procédure stockée IN prod_id . Lorsque nous passons son argument dans l'instruction d'appel, la procédure stockée renvoie les résultats attendus. Cependant, si vous ne transmettez pas d'argument, cela génère une erreur.

Lecture bonus :Comment créer une clé primaire composite dans MySQL

Paramètre OUT

Voici une procédure stockée créée à l'aide du paramètre OUT.

mysql> DELIMITER $$

mysql> CREATE PROCEDURE get_count(
       IN prod_id int,
       OUT total INT
       )
       BEGIN
       SELECT COUNT(*)
       INTO total
       FROM products
       WHERE product_id = prod_id;
       END$$

mysql> DELIMITER ;

mysql> call get_count(1,@total);

mysql> select @total;
+--------+
| @total |
+--------+
|      1 |
+--------+

Dans la procédure stockée ci-dessus, nous définissons 2 paramètres - un paramètre IN pour prod_id et un paramètre OUT pour stocker le résultat de la procédure.

Lorsque nous transmettons l'identifiant du produit dans l'instruction d'appel, notre procédure stockée calcule le nombre de lignes correspondant à cet identifiant de produit et stocke le résultat dans le paramètre OUT total

Lecture bonus :comment tronquer une table dans MySQL

Paramètre INOUT

Voici une procédure stockée créée à l'aide du paramètre INOUT.

DELIMITER $$

CREATE PROCEDURE counter(
	INOUT count INT,
    IN increment INT
)
BEGIN
	SET count = count + increment;
END$$

DELIMITER ;

Dans la procédure stockée ci-dessus, nous avons défini un paramètre IN incrément et un paramètre INOUT count qui stocke le résultat de la procédure stockée. Notre procédure stockée ajoute essentiellement l'incrément compter paramètre et stocke le résultat dans count paramètre.

mysql> SET @count = 10;

mysql> CALL counter(@count,1);

mysql> SELECT @count;
+--------+
| @count |
+--------+
|     11 |
+--------+

Heureusement, vous pouvez maintenant créer facilement une procédure stockée avec des paramètres dans MySQL.

Lecture bonus :MySQL DROP VIEW

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !