Maison  >  Article  >  base de données  >  Quelle est la différence la plus significative entre les fonctions et procédures MySQL ?

Quelle est la différence la plus significative entre les fonctions et procédures MySQL ?

WBOY
WBOYavant
2023-09-17 22:49:021204parcourir

MySQL 函数和过程之间最显着的区别是什么?

La différence la plus significative entre les procédures et les fonctions est qu'elles sont appelées différemment et à des fins différentes. En dehors de cela, voici les différences entre les procédures et les fonctions -

  • Les processus ne renvoient pas de valeur. Au lieu de cela, il est appelé à l'aide d'une instruction CALL pour effectuer une opération, telle que la modification d'une table ou le traitement des enregistrements récupérés.

    Les fonctions, quant à elles, sont appelées dans une expression et renvoient une valeur unique directement à l'appelant à utiliser dans l'expression. Autrement dit, les fonctions peuvent être utilisées dans des expressions de la même manière que des constantes, des fonctions intégrées ou des références à des colonnes de tableau.

  • Nous ne pouvons pas appeler des fonctions en utilisant : l'instruction CALL. Nous ne pouvons pas appeler de procédures dans des expressions.

  • La syntaxe de création de routine est quelque peu différente de celle des procédures et des fonctions, comme suit -

CREATE
   [DEFINER = { user | CURRENT_USER }]
   PROCEDURE sp_name ([proc_parameter[,...]])
   [characteristic ...] routine_body

CREATE
   [DEFINER = { user | CURRENT_USER }]
   FUNCTION sp_name ([func_parameter[,...]])
   RETURNS type
   [characteristic ...] routine_body

proc_parameter:
   [ IN | OUT | INOUT ] param_name type

func_parameter:
   param_name type

type:
   Any valid MySQL data type

characteristic:
   COMMENT 'string'
   | LANGUAGE SQL
   | [NOT] DETERMINISTIC
   | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
   | SQL SECURITY { DEFINER | INVOKER }

routine_body:
   Valid SQL routine statement
  • Les paramètres de procédure peuvent être définis comme entrée uniquement, sortie uniquement ou à la fois pour l'entrée et la sortie. Cela signifie que la procédure peut utiliser des paramètres de sortie pour renvoyer des valeurs à l'appelant. Ces valeurs sont accessibles dans les instructions suivant l'instruction CALL.

    D'un autre côté, les fonctions n'ont que des paramètres d'entrée. Par conséquent, bien que les procédures et les fonctions puissent avoir des paramètres, la syntaxe de déclaration des paramètres pour les procédures est différente de celle pour les fonctions.

  • La fonction renvoie une valeur, il doit donc y avoir une clause RETURNS dans la définition de la fonction indiquant le type de données de la valeur de retour. De plus, il doit y avoir au moins une instruction RETURN dans le corps de la fonction pour renvoyer une valeur à l'appelant.

    En revanche, RETURNS et RETURN n'apparaîtront pas dans la définition de la procédure.

    li>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer