Les procédures stockées sont disponibles depuis la version 5 de MySQL. Elles permettent d’automatiser des actions qui peuvent être très complexes.

Une procédure stockée est en fait une série d’instructions SQL désignée par un nom. Lorsque l’on crée une procédure stockée, on l’enregistre dans la base de données que l’on utilise, au même titre qu’une table, par exemple. Une fois la procédure créée, il est possible d’appeler celle-ci par son nom. Les instructions de la procédure sont alors exécutées.

Contrairement aux requêtes préparées, qui ne sont gardées en mémoire que pour la session courante, les procédures stockées sont, comme leur nom l’indique, stockées de manière durable, et font bien partie intégrante de la base de données dans laquelle elles sont enregistrées.

Exemple: Créons une table simple:

mysql> create table persons (nom varchar(30), prenom varchar(30), pseudo varchar(30));

Ajoutons des enregistrements:

mysql> insert into persons( nom, prenom, pseudo) values
('DUPONT', 'Michel', 'mdupont'),
('DURAND', 'Patrick', 'pdurand'),
('MARTIN', 'Sophie', 'smartin');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql>

Nous allons créer une procédure, qui prendra 2 variables.

Avant tout il faut changer temporairement le délimiteur de fin de commande, pour que MySQL ne s’emmêle pas les crayons:

mysql> delimiter |
mysql>

Création de la procédure:

mysql> CREATE PROCEDURE list_persons(myname VARCHAR(64),myfirstname VARCHAR(64))      
    BEGIN
    SELECT nom, prenom, pseudo
    FROM persons WHERE nom = myname AND prenom = myfirstname;
    END|
Query OK, 0 rows affected (0.00 sec)

mysql>

Puis on remet le délimiteur normal « ; »

mysql> delimiter ;
mysql>

Enfin on teste notre procédure stockée:

mysql> call list_persons ('MARTIN','Sophie');
+--------+--------+---------+
| nom | prenom | pseudo |
+--------+--------+---------+
| MARTIN | Sophie | smartin |
+--------+--------+---------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)
mysql>

Voilà, vous avez créé votre première procédure stockée sous MySQL. Bravo.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.