Procédure stockée vs fonction
Les procédures et fonctions stockées sont deux types de blocs de programmation. Les deux doivent avoir des noms d'appel. Ces noms d'appel sont utilisés pour les appeler à l'intérieur d'un autre bloc de programmation comme les fonctions de procédures et les packages ou les requêtes SQL. Ces deux types d'objets acceptent des paramètres et exécutent la tâche derrière ces objets. C'est la syntaxe (dans ORACLE) pour créer une procédure stockée, créer ou remplacer la procédure nom de la procédure (paramètres)
as
commencement
instructions;
exception
exception_handling
fin;
Et voici la syntaxe pour créer une fonction (dans ORACLE), créer ou remplacer la fonction nom_fonction (paramètres)
return return_datatype
as
commencement
instructions;
return return_value/variable;
exception;
exception_handling;
fin;
Procédures stockées
Comme mentionné ci-dessus, les procédures stockées sont appelées blocs de programmation. Ils acceptent les paramètres en tant qu'entrées de l'utilisateur et traitent selon la logique derrière la procédure et donnent le résultat (ou exécutent une action spécifique). Ces paramètres peuvent être de type IN, OUT et INOUT. Les déclarations de variables, les affectations de variables, les instructions de contrôle, les boucles, les requêtes SQL et d'autres appels de fonctions/procédures/packages peuvent se trouver dans le corps des procédures.
Fonctions
Les fonctions sont également des blocs de programmation nommés, qui doivent renvoyer une valeur à l'aide de l'instruction RETURN, et avant de renvoyer une valeur, son corps effectue également certaines actions (selon la logique donnée). Les fonctions acceptent également des paramètres à exécuter. Les fonctions peuvent être appelées à l'intérieur des requêtes. Lorsqu'une fonction est appelée dans une requête SELECT, elle s'applique à chaque ligne du jeu de résultats de la requête SELECT. Il existe plusieurs catégories de fonctions ORACLE. Ils sont,
Fonctions sur une seule ligne (renvoie un seul résultat pour chaque ligne de la requête)
Il existe des sous-catégories de fonctions à une seule ligne.
- Fonction numérique (Ex: ABS, SIN, COS)
- Fonction de caractère (Ex: CONCAT, INITCAP)
- Fonction date/heure (Ex: LAST_DAY, NEXT_DAY)
- Fonctions de conversion (Ex: TO_CHAR, TO_DATE)
- Fonction de collecte (Ex: CARDINALITE, SET)
- Fonctions d'agrégation (renvoie une seule ligne, basée sur un groupe de lignes. Ex: AVG, SUM, MAX)
- Fonctions analytiques
- Fonctions de référence d'objet
- Fonctions du modèle
- Fonctions définies par l'utilisateur
Quelle est la différence entre une fonction et une procédure stockée ?
• Toutes les fonctions doivent retourner une valeur en utilisant l'instruction RETURN. Les procédures stockées ne renvoient pas de valeurs à l'aide de l'instruction RETURN. L'instruction RETURN à l'intérieur d'une procédure renverra son contrôle au programme appelant. Les paramètres OUT peuvent être utilisés pour renvoyer des valeurs à partir de procédures stockées.
• Les fonctions peuvent être appelées dans les requêtes, mais les procédures stockées ne peuvent pas être utilisées dans les requêtes.
• Le type de données RETURN doit être inclus pour créer une fonction, mais dans la procédure stockée DDL, ce n'est pas le cas.