Maison >base de données >tutoriel mysql >Comment écrire des procédures stockées dans une base de données
Introduction aux procédures stocké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. compilé et stocké dans Dans la base de données, l'utilisateur appelle et exécute la procédure stockée en spécifiant son nom et en donnant des paramètres (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éliorer les fonctionnalités de SQL. langage et flexibilité : les procédures stockées peuvent être écrites avec des instructions de contrôle, ont une grande flexibilité et peuvent compléter des jugements complexes et des opérations plus complexes.
(2). Programmation de composants standard : après la création d'une procédure stocké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 s'exécutera 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 pour exécuter un certain processus stocké, vous pouvez limiter les autorisations d'accès aux données correspondantes et empêcher les utilisateurs non autorisés d'accéder aux données. accès, 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. 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 : 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 maîtrisons principalement 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.
La chose la plus impressionnante est la définition des entrées et des sorties comme "in n int" et "out sum int". En consultant les blogs associés, 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|fonction([ [IN |OUT |INOUT] Nom du paramètre type de données...])
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 Si la valeur de ce paramètre. est modifié lors de la procédure stockée, il ne peut pas être renvoyé et constitue la valeur par défaut
Paramètre de sortie OUT
Cette valeur peut être modifiée à l'intérieur de la procédure stockée et peut être renvoyée
Paramètre d'entrée et de sortie INOUT
Spécifié lors de l'appel, et peut être modifié et renvoyé
IN et OUT ont été expérimentés dans l'expérience, principalement la compréhension de INOUT Voici un exemple :
Exemple d'utilisation du paramètre inout (peut à la fois saisir une valeur et transmettre une valeur)
Déclaration. fonction : Passer un âge et augmenter automatiquement l'âge de 10 ans
créer la procédure p3(inout age int)
begin
set age:=age+10;
fin
où : appelé At cette fois, la valeur du paramètre du type 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'abord définir une variable et initialiser la valeur. 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!