Maison > Article > base de données > Comment écrire une procédure stockée dans une base de données
Les instructions SQL doivent d'abord être compilées puis exécutées, et les procédures stockées (Stored Procedure) sont un ensemble d'instructions SQL pour remplir des fonctions spécifiques. Elles sont compilées et stockées dans la base de données. L'utilisateur précise Appeler la procédure stockée avec le nom et les paramètres donnés (si la procédure stockée a des paramètres). Les procédures stockées sont des fonctions programmables créées et enregistrées dans la base de données et peuvent être composées d'instructions SQL et de structures de contrôle. Les procédures stockées sont utiles lorsque vous souhaitez exécuter la même fonction sur différentes applications ou plates-formes, ou lorsque vous souhaitez encapsuler des fonctionnalités spécifiques. Les procédures stockées dans une base de données peuvent être considérées comme une simulation de l’approche de programmation orientée objet, qui permet de contrôler la manière dont les données sont accessibles.
Cours recommandés : Tutoriel MySql.
Avantages des procédures stockées :
(1) Améliorez la fonctionnalité et la flexibilité du langage SQL : les procédures stockées peuvent être écrites avec des instructions de contrôle. , Il a une grande flexibilité et peut effectuer des jugements complexes et des opérations plus complexes.
(2). Programmation de composants standard : Une fois qu'une procédure stockée est créée, elle peut être appelée plusieurs fois dans le programme sans avoir à réécrire l'instruction SQL de la procédure stockée. Et les professionnels des bases de données peuvent modifier les procédures stockées à tout moment sans affecter le code source de l'application.
(3). Vitesse d'exécution plus rapide : si une opération contient une grande quantité de code Transaction-SQL ou est exécutée plusieurs fois, la procédure stockée sera exécutée beaucoup plus rapidement que le traitement par lots. Parce que les procédures stockées sont précompilées. Lorsqu'une procédure stockée est exécutée pour la première fois, la requête est analysée et optimisée par l'optimiseur et un plan d'exécution est finalement stocké dans la table système. L'instruction batch Transaction-SQL doit être compilée et optimisée à chaque exécution, et la vitesse est relativement plus lente.
(4). Réduire le trafic réseau : Pour les opérations sur le même objet de base de données (telles que requête, modification), si les instructions Transaction-SQL impliquées dans cette opération sont organisées en procédures stockées, alors lorsque la transaction est effectuée sur l'ordinateur client Lorsque la procédure stockée est appelée, seule l'instruction d'appel est transmise sur le réseau, réduisant ainsi considérablement le trafic réseau et la charge du réseau.
(5). Utilisez-le pleinement comme mécanisme de sécurité : en restreignant les autorisations d'exécution d'un certain processus stocké, il est possible de restreindre les autorisations d'accès aux données correspondantes et d'empêcher les utilisateurs non autorisés d'accéder au accès aux données, garantissant la sécurité des données.
Procédures stockées de MySQL
Les procédures stockées sont une fonction importante de la base de données MySQL 5.0 ne prenait pas en charge les procédures stockées auparavant, ce qui réduisait considérablement l'application de MySQL. Heureusement, MySQL 5.0 commence à prendre en charge les procédures stockées, ce qui peut grandement améliorer la vitesse de traitement de la base de données et également améliorer la flexibilité de la programmation de la base de données.
Création de procédures stockées MySQL
Syntaxe
CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体 DELIMITER // CREATE PROCEDURE myproc(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM students; END // DELIMITER ;
Délimiteur
MySQL utilise ";" comme délimiteur par défaut. Si aucun délimiteur n'est déclaré, le compilateur traitera la procédure stockée comme une instruction SQL, donc le processus de compilation signalera une erreur, vous devez donc utiliser "DELIMITER //" pour déclarer le délimiteur. délimiteur de segment actuel à l'avance, permettant au compilateur de considérer le contenu entre les deux "//" comme le code de la procédure stockée, et n'exécutera pas ces codes ; "DELIMITER;" signifie restaurer le délimiteur.
Paramètres
La procédure stockée peut avoir des paramètres d'entrée, de sortie, d'entrée et de sortie selon les besoins. S'il y a plusieurs paramètres, utilisez "," pour les séparer. Les paramètres des procédures stockées MySQL sont utilisés dans la définition des procédures stockées. Il existe trois types de paramètres, IN, OUT, INOUT :
La valeur du paramètre IN doit être spécifiée lors de l'appel de la procédure stockée. le paramètre dans la procédure stockée. La valeur ne peut pas être renvoyée et est la valeur par défaut OUT : La valeur peut être modifiée à l'intérieur de la procédure stockée et peut être renvoyée INOUT : Elle est spécifiée lors de l'appel et peut être modifiée et renvoyée
Corps du processus
Le début et la fin du corps du processus sont marqués par BEGIN et END.
Résumé
Cette fois, nous avons principalement maîtrisé l'utilisation des procédures stockées. En général, les procédures stockées sont en fait similaires aux fonctions en C++. Vous devez appeler cette fonction dans le fichier qui crée ce processus, mais pour une procédure stockée, cela équivaut à stocker ce processus d'opération dans la base de données. Vous pouvez utiliser call et l'appeler, et saisir ou sortir certains paramètres et résultats.
Ce qui m'a le plus impressionné, ce sont les définitions d'entrée et de sortie comme "in n int" et "out sum int". En consultant les blogs connexes, nous pouvons résumer les règles d'utilisation des définitions d'entrée et de sortie comme suit :
Les paramètres des procédures stockées MySQL sont utilisés dans la définition des procédures stockées. Il existe trois types de paramètres
IN, OUT, INOUT
Le format est : Créer une procédure| function([[IN |OUT | INOUT ] Type de données du nom du paramètre...])
Paramètre d'entrée IN
Indique que la valeur de ce paramètre doit être spécifiée lors de l'appel de la procédure stockée. La modification de la valeur de ce paramètre pendant la procédure stockée ne peut pas être renvoyée et est la valeur par défaut <.>
Paramètres de sortie OUT Cette valeur peut être modifiée dans la procédure stockée et peut être renvoyée
Paramètres d'entrée et de sortie INOUT Il peut être spécifié lors de l'appel, et peut être modifié et renvoyé
Fonction de déclaration : passer un âge, augmenter automatiquement l'âge de 10 ans
créer une procédure p3 (inout age int)
commencer
set age:=age+10;
end
Parmi eux : lors de l'appel, la valeur du paramètre inout est à la fois un type d'entrée et un type de sortie. Donnez-lui une valeur. La valeur n'est pas une variable, nous devons donc. définissez d'abord une variable et initialisez la valeur. Transmettez-la directement lors de l'appel.
set @currentAge=8$
call p3(@currentAge)$
select @currentAge$
Après avoir créé et exécuté la procédure stockée, les résultats d'exécution sont les suivants :
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!