PRATIQUE OUTILS 
MySQL 5 : les procédures stockées
 
Explications fondamentales et exemple de fonctionnement de l'une des nouveautés les plus attendues de la dernière version du fameux SGBD. (28/07/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

Longtemps réclamées par les développeurs d'applications professionnelles, les procédures stockées ont enfin fait leur apparition dans MySQL avec la version 5 du SGBD Open Source, rejoignant ainsi les autres SGBD professionnels comme Oracle, DB2, SQL Server ou PostgreSQL.

Les procédures stockées sont des routines enregistrées au sein même du serveur MySQL. En évitant de placer ces procédures au sein de l'application, ou de se reposer sur le langage serveur, le développeur s'assure qu'elles fonctionnent sur toutes les installations, sans distinction d'environnement logiciel ou système. Par ailleurs, le trafic d'informations est réduit, les procédures et les données sur lesquelles elles s'appliquent reposant sur le même serveur.

Les procédures stockées sont construites à l'aide de commandes SQL classiques. La syntaxe de déclaration d'une procédure est rapide à apprendre :
  1. CREATE PROCEDURE trouc(IN parametre VARCHAR(10))
  2.   BEGIN
  3.     SELECT COUNT(*) FROM table WHERE def=parametre;
  4.   END;
Les paramètres peuvent être de forme IN (paramètre entrant, comme pour une fonction), OUT (paramètre sortant, récupérable par le reste du code SQL) et INOUT (les deux à la fois), et un type de donnée (ici, il s'agit d'un entier, integer).

Une fois la procédure stockée paramétrée, on l'appellera à l'aide de la commande CALL :
  1. CALL trouc("Gros sac");

Les procédures stockées peuvent déclarer leurs propres variables, et disposent également de la syntaxe SELECT..INTO, qui permet de stocker des colonnes choisies directement au sein de variables internes ou de session.

  1. CREATE PROCEDURE sp1 (x VARCHAR(5))
  2.   BEGIN
  3.     DECLARE xname VARCHAR(5) DEFAULT 'bob';
  4.     DECLARE newname VARCHAR(5);
  5.     DECLARE xid INT;
  6.    
  7.     SELECT xname,id INTO newname,xid
  8.       FROM table1 WHERE xname = xname;
  9.     SELECT newname;
  10.   END;
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page