PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.7 » Programmation serveur » Étendre SQL » Procédures utilisateur

37.4. Procédures utilisateur

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'applique pas aux procédures. Ces attributs contrôlent comment la fonction est appelée dans une requête, ce qui est hors propos pour les 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.