Les procédures stockées ont fait leur apparition dans MySQL 5, rejoignant ainsi les autres SGBD professionnels.

Une procédure stockée est un jeu de commandes SQL qui réside sur le serveur, ce qui offre un gain de performances, car moins d'informations sont échangées entre le serveur et le client. La syntaxe de déclaration d'une procédure est rapide à apprendre :

CREATE PROCEDURE trouc(IN parametre VARCHAR(10))
    BEGIN
        SELECT COUNT(*) FROM table WHERE def=parametre;
    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 :
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.
CREATE PROCEDURE sp1 (x VARCHAR(5))
    BEGIN
        DECLARE xname VARCHAR(5) DEFAULT 'bob';
        DECLARE newname VARCHAR(5);
        DECLARE xid INT;
      
        SELECT xname,id INTO newname,xid
            FROM table1 WHERE xname = xname;
        SELECT newname;
     END;
Article complet sur JDNet développeurs
Manuel de référence MySQL