Maison > base de données > tutoriel mysql > Quelle est la différence entre les procédures stockées MySQL et les fonctions stockées ?

Quelle est la différence entre les procédures stockées MySQL et les fonctions stockées ?

青灯夜游
Libérer: 2022-02-17 15:22:59
original
16655 Les gens l'ont consulté

Différence : 1. Les fonctions stockées ont de nombreuses restrictions, tandis que les procédures stockées ont relativement peu de restrictions ; 2. Les fonctions stockées renverront une et une seule valeur de résultat à l'appelant, tandis que les procédures stockées renverront un ou plusieurs ensembles de résultats ;3. Il existe trois types de paramètres pour les procédures stockées et un seul type de paramètre pour les fonctions stockées.

Quelle est la différence entre les procédures stockées MySQL et les fonctions stockées ?

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Qu'est-ce qu'une procédure stockée ?

Une procédure stockée est un ensemble d'instructions SQL utilisées pour exécuter des fonctions spécifiques dans les grands systèmes de bases de données. Elles sont stockées dans la base de données après la première compilation, elles n'ont pas besoin d'être à nouveau compilées lorsqu'elles sont appelées à nouveau. l'utilisateur spécifie le nom de la procédure stockée et les paramètres (si la procédure stockée a des paramètres) pour l'exécuter. Les procédures stockées constituent un objet important dans la base de données et toute application de base de données bien conçue doit utiliser des procédures stockées.

Avantages :
(1) Réutilisation : les procédures stockées peuvent être réutilisées, ce qui peut réduire la charge de travail du développeur.
(2) Améliorer l'efficacité : La procédure stockée sera compilée lors de sa première utilisation. Une fois compilée, il n'est pas nécessaire de la compiler à nouveau, ce qui améliore l'efficacité.
(3) Réduire le trafic réseau : La procédure stockée est située sur le serveur Lors de l'appel, il vous suffit de transmettre le nom et les paramètres de la procédure stockée, réduisant ainsi la quantité de données transmises sur le réseau.
(4) Sécurité : les procédures stockées paramétrées peuvent empêcher l'injection SQL, et les autorisations Accorder, Refuser et Révoquer peuvent être appliquées aux procédures stockées.

Inconvénients :
(1) Problèmes de débogage
(2) Mauvaise portabilité
(3) Mauvaise maintenabilité

Code :

CREATE DEFINER=`root`@`%` PROCEDURE `getName`(IN `uid` int,OUT my_uname VARCHAR(255))
BEGIN
	#Routine body goes here...
select admin_name into my_uname from admin_user where id=uid;
  select my_uname;
END
Copier après la connexion

Qu'est-ce qu'une fonction stockée ?

Une fonction stockée est un ensemble de procédures stockées, avec des noms de fonction, des paramètres et renvoie un ensemble de résultats. Les fonctions stockées ont une structure similaire aux procédures stockées, mais doivent avoir une clause de retour pour renvoyer des résultats.

Code :

CREATE DEFINER=`root`@`%` FUNCTION `queryChildrenAreaInfo`(areaId INT) RETURNS varchar(4000) CHARSET utf8
BEGIN
	DECLARE sTemp VARCHAR(4000);
	DECLARE sTempChd VARCHAR(4000);
	
	SET sTemp='$';
	SET sTempChd = CAST(areaId AS CHAR);
	
	WHILE sTempChd IS NOT NULL DO
	SET sTemp= CONCAT(sTemp,',',sTempChd);
	SELECT GROUP_CONCAT(id) INTO sTempChd FROM personal_dept WHERE FIND_IN_SET(dept_parentId,sTempChd)>0;
	END WHILE;
	RETURN sTemp;
END
Copier après la connexion

La différence entre les procédures stockées et les fonctions stockées

1 Présentation

Les procédures stockées et les fonctions stockées sont collectivement appelées routines stockées. La syntaxe des deux est très similaire, mais leur contenu est différent.

Les fonctions de stockage ont de nombreuses restrictions. Par exemple, les tables temporaires ne peuvent pas être utilisées, seules les variables de table peuvent être utilisées. Certaines fonctions ne sont également pas disponibles, etc.

Les restrictions sur les procédures stockées sont relativement peu nombreuses, et les fonctions à implémenter sont plus complexes.

2. Différence de valeur de retour

La fonction de stockage renverra une et une seule valeur de résultat à l'appelant.

Une procédure stockée renverra un ou plusieurs ensembles de résultats (les fonctions ne peuvent pas le faire), ou simplement pour obtenir un effet ou une action sans renvoyer de résultat.

3. Différentes méthodes d'appel
Les fonctions stockées sont intégrées dans SQL et peuvent être appelées dans select, tout comme les fonctions intégrées, telles que cos() et sin().

4. Différences dans les paramètres

Les types de paramètres des fonctions stockées sont similaires aux paramètres IN

Il existe trois types de paramètres de procédures stockées : les paramètres IN, les paramètres OUT, les paramètres INOUT

in : les données sont uniquement transférées. de l'extérieur vers l'intérieur Utilisation (transfert de valeur), qui peut être une valeur numérique ou une variable

out : uniquement autorisé pour un usage interne du processus (aucune donnée externe n'est utilisée), pour un usage externe (transfert de référence : données externes sera d'abord effacé avant d'entrer dans l'interne), Ne peut être que des variables

inout : L'externe peut être utilisé en interne, et celui modifié en interne peut également être utilisé en externe. Transfert de référence typique, seules les variables peuvent être transmises.


Une procédure stockée est un ensemble d'instructions SQL définies par l'utilisateur. Les utilisateurs peuvent appeler des procédures stockées pour concevoir des tâches pour des tables spécifiques ou d'autres objets.

Une fonction est généralement une méthode définie par la base de données, qui reçoit des paramètres et renvoie une valeur d'un certain type et n'implique pas de table utilisateur spécifique.

【Recommandation associée : tutoriel vidéo mysql

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal