Les différences clés sont :
     Les procédures sont définies avec la commande CREATE
     PROCEDURE, et non pas CREATE
     FUNCTION.
    
     Les procédures ne renvoient pas une valeur ; de ce fait,
     CREATE PROCEDURE n'a pas de clause
     RETURNS. Néanmoins, des procédures peuvent renvoyer à
     la place des données à leurs appelants via des paramètres en sortie.
    
     Alors qu'une fonction est appelée au sein d'une requête ou d'une commande
     DML, une procédure est appelée en isolation en utilisant la commande
     CALL.
    
     Une procédure peut valider ou annuler des transactions lors de son
     exécution (puis commencer automatiquement une nouvelle transaction), à
     partir du moment où la commande CALL qui l'a appelé ne
     fait pas partie d'un bloc de transaction explicite. Une fonction ne peut
     pas faire ça.
    
Certains attributs de fonction, tels que la volatilité, ne s'appliquent pas aux procédures. Ces attributs contrôlent l'utilisation de la fonction dans une requête, et ne sont pas pertinents dans le cas de procédures.
Les explications présentes dans les sections suivantes concernant comment définir des fonctions utilisateurs s'appliquent également aux procédures, à la différence des points ci-dessus.
  Collectivement, les fonctions et les procédures sont également appelées des
  routines.
  Il y a des commandes telles que ALTER
  ROUTINE et DROP
  ROUTINE qui peuvent s'appliquer sur des fonctions
  ou des procédures sans avoir besoin de savoir de quel type il s'agit.
  Veuillez noter, toutefois, qu'il n'y a pas de commande
  CREATE ROUTINE.