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, tel 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édure, à 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
.