Fonctions et procédures la différence

Quelles sont les différences majeures entre une fonction SQL dite UDF (User Defined Function) et une procédure ?

Une fonction (ou UDF, user Define Fonction) est un programme destiné à fournir en sortie, une valeur scalaire ou une table (SELECT).
Les fonctions scalaires ne peuvent pas contenir :

de transaction (BEGIN TRANSACTION, COMMIT, ROLLBACK,
de sql dynamique (EXEC (‘…’)
d’ordre de mise à jour (INSERT, UPDATE, DELETE, MERGE)
d’ordre DDL (CREATE, ALTER, DROP), DCL (GRANT REVOKE)
un appel à une procédure (EXEC P…)
l’utilisation d’un cursor (DECLARE CURSOR, FETCH…)
de commande de débogage comme PRINT

Une fonction table peut contenir des ordres de mise à jour, mais ces commandes ne peuvent porter qu’uniquement sur la table en sortie.

Une fonction se crée par CREATE FUNCTION et si vous le souhaitez vous pouvez la placer dans un schéma SQL particulier que vous aurez préalablement créé.

Une procédure se créée par CREATE PROCEDURE et ses E/S sont :

* des paramètres input et output
* un éventuel jeu de résultat (voir même plusieurs)
* une valeur de retour (code d’erreur)

Elle peut contenir tout code SQL, y compris :

* transaction
* mise à jour,
* SQL dynamique
* cursor
* commande DDL

Bien entendu vous pouvez créer vos procédures dans différents schémas SQL que vous aurez préalablement créés.

***

Frédéric BROUARD – SQLpro – MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits – optimisation – tuning – formation

2 réflexions au sujet de « Fonctions et procédures la différence »

  1. Avatar de khaledmerradkhaledmerrad

    Bonjour,
    juste des petites remarques.
    -On peut utiliser les cursor (DECLARE CURSOR, FETCH…) dans les fonctions scalaire(j ‘ai travaillé sous SQLserver 2008 & MySql 5).
    -parmi les avantages de la fonction scalaire qu’on peut l’utiliser dans la clause SELECT ex: SELECT Fonction(par1…parN), attribut1,….. from Table join ..)

    Merci.

Laisser un commentaire