web-dev-qa-db-fra.com

Quelles sont les différences entre les procédures, fonctions et routines stockées?

Dans le contexte de la base de données MySQL, quelle est la différence entre ces 3 termes:

  • procédure stockée
  • fonction stockée
  • routine stockée

Les fonctions intégrées telles que les fonctions date-heure (par exemple WEEKDAY() etc.) sont également considérées comme quoi?

71
Yang

Google est ton ami. La première correspondance pour "procédure de fonction de routine mysql" est la suivante: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

Un résumé rapide:

Une routine stockée est soit une procédure soit une fonction.

Une procédure est invoquée à l'aide d'une instruction CALL et ne peut renvoyer des valeurs qu'à l'aide de variables de sortie.

Une fonction peut être appelée à l'intérieur d'une instruction comme n'importe quelle autre fonction et peut renvoyer une valeur scalaire.

81
Jakob

Ici, j'ai essayé de résumer les différences entre les fonctions et les procédures:

  1. UNE FONCTION toujours renvoie une valeur en utilisant l'instruction return. PROCEDURE peut renvoyer une ou plusieurs valeurs via des paramètres ou ne pas en renvoyer du tout.
  2. Fonctions sont normalement utilisés pour les calculs alors que procédures sont normalement utilisés pour exécuter la logique métier.
  3. Une fonction ne renvoie qu'une seule valeur. La procédure peut renvoyer plusieurs valeurs (max 1024).
  4. La procédure stockée renvoie toujours une valeur entière de zéro par défaut. Alors que les types de retour de fonction peuvent être des valeurs scalaires ou de table ou de table.
  5. Les procédures stockées ont un plan d'exécution précompilé, alors que les fonctions ne le sont pas.
  6. Une fonction peut être appelée directement par une instruction SQL comme SELECT func_name FROM DUAL alors que les procédures ne le peuvent pas.
  7. La procédure stockée a la sécurité et réduit le trafic réseau et nous pouvons également appeler la procédure stockée dans un certain nombre d'applications à la fois.
  8. Une fonction peut être utilisée dans les requêtes SQL tandis qu'une procédure ne peut pas être utilisée dans les requêtes SQL. Cela provoque une différence majeure entre la fonction et les procédures.
38
Sujeet Kumar

Différence entre la fonction MySQL et la procédure mysql

Fonction MYSQL

Il doit renvoyer de la valeur. IN, OUT et INOUT ne peuvent pas être utilisés dans la fonction. Mais le type de données de retour doit être déclaré lors de la création d'une fonction. La fonction peut être appelée à partir d'une instruction SQL. La fonction renvoie une valeur.

Procédure MYSQL

Les valeurs de retour ne sont pas obligatoires mais peuvent être utilisées avec le paramètre OUT pour traiter les retours. Peut utiliser le IN | OUT | INOUT paramètres. La procédure ne peut pas être appelée à partir de l'instruction SQL. retourne plusieurs valeurs en utilisant les paramètres OUT ou INOUT.

28
Deepak Mani

PROCÉDURES VS FONCTIONS

1.  PROCEDURES may or may not return a value but FUNCTION must return a value
2.  PROCEDURES can have input/output parameter but FUNCTION only has input parameter.
3.  We can call FUNCTION from PROCEDURES but cannot call PROCEDURES from a function. 
4.  We cannot use PROCEDURES in SQL statement like SELECT, INSERT, UPDATE, DELETE, MERGE etc. but we can use them with FUNCTION.
5.  We can use try-catch exception handling in PROCEDURES but we cannot do that in FUNCTION. 
6.  We can use transaction in PROCEDURES but it is not possible in FUNCTION.
5
venkat

La fonction doit renvoyer une valeur mais dans la procédure stockée, elle est facultative (la procédure peut retourner zéro ou n valeurs). Les fonctions ne peuvent avoir que des paramètres d'entrée, tandis que les procédures peuvent avoir des paramètres d'entrée/sortie. Les fonctions peuvent être appelées depuis Procedure alors que les procédures ne peuvent pas être appelées depuis Function.

2
James