Maison > Article > base de données > procédure stockée mysql c
MySQL est un système de gestion de bases de données relationnelles très couramment utilisé, qui peut être utilisé pour stocker, traiter et gérer de grandes quantités de données. Les procédures stockées sont une fonction très utile fournie par MySQL. Elles peuvent encapsuler une série d'instructions SQL dans un bloc de code réutilisable, améliorant ainsi l'efficacité d'exécution des instructions SQL, réduisant la complexité du code, améliorant la sécurité, etc. Par conséquent, maîtriser l’utilisation des procédures stockées MySQL est d’une grande importance pour améliorer l’efficacité du développement et de la gestion des bases de données.
1. Introduction aux procédures stockées
Les procédures stockées sont un ensemble d'instructions SQL précompilées définies dans MySQL. Elles sont compilées dans le serveur de base de données et ne doivent être appelées que lors d'une requête. Enregistrez simplement la procédure. Par rapport à l'exécution seule d'instructions SQL, les procédures stockées peuvent réduire considérablement la surcharge du réseau et améliorer l'efficacité de l'interrogation et du traitement des données.
De plus, les procédures stockées présentent les caractéristiques importantes suivantes :
2. Format syntaxique de la procédure stockée
Pour définir une procédure stockée dans MySQL, vous devez utiliser l'instruction CREATE PROCEDURE. Voici le format de syntaxe de base de l'instruction CREATE PROCEDURE :
CREATE PROCEDURE 存储过程名称(参数列表) BEGIN -- sql语句 END;
Parmi eux, le nom de la procédure stockée est requis et la liste des paramètres peut être omise si nécessaire. Entre BEGIN et END, vous pouvez écrire une série d'instructions SQL pour effectuer des requêtes, des écritures, des modifications et d'autres opérations connexes.
Ce qui suit est un exemple simple de procédure stockée. La procédure stockée n'a qu'un seul paramètre, elle le modifie simplement et renvoie :
CREATE PROCEDURE test_proc(IN num INT) BEGIN SET num = num + 1; SELECT num; END;
Lors de l'exécution de la procédure stockée, vous pouvez Appelé. via l'instruction CALL :
CALL test_proc(10);
Le résultat de l'exécution est 11.
3. Paramètres dans les procédures stockées
Dans les procédures stockées, vous pouvez utiliser trois types de paramètres : IN, OUT et INOUT.
Ce qui suit est un exemple de procédure stockée avec des paramètres :
CREATE PROCEDURE get_user_by_id(IN userid INT, OUT username VARCHAR(50)) BEGIN SELECT username FROM user WHERE id=userid; SET username = CONCAT('Welcome, ', username); END;
Lors de l'appel de cette procédure stockée, vous devez transmettre le paramètre userid et définir un variable pour recevoir les paramètres de sortie du nom d'utilisateur :
DECLARE uname VARCHAR(50); CALL get_user_by_id(1, @uname); SELECT @uname;
4. Contrôle de processus et boucles dans les procédures stockées
En plus d'exécuter directement des instructions SQL, les procédures stockées peuvent également utiliser des instructions de contrôle de flux et instructions de boucle pour effectuer des opérations logiques spécifiques. MySQL prend en charge les instructions de contrôle de flux suivantes :
Ce qui suit est un exemple de boucle WHILE DO Cette procédure stockée ajoute 1 an à l'âge dans la table utilisateur :
CREATE PROCEDURE update_user_age() BEGIN DECLARE i INT DEFAULT 0; DECLARE n INT; SELECT COUNT(*) FROM user INTO n; WHILE i<=n DO UPDATE user SET age=age+1 WHERE id=i; SET i=i+1; END WHILE; END;
Lors de l'exécution de cette procédure stockée. procédure, appelez simplement :
CALL update_user_age();
5. Gestion des exceptions dans les procédures stockées
Lorsqu'une erreur se produit dans une procédure stockée, la gestion des exceptions peut être utilisée pour éviter les plantages du programme. Dans MySQL, la gestion des exceptions est implémentée à l'aide de la syntaxe DECLARE ... HANDLER.
Ce qui suit est un exemple de gestion des exceptions lors de la suppression d'un enregistrement de table utilisateur, la procédure stockée lèvera une exception si l'enregistrement a été référencé par d'autres tables.
CREATE PROCEDURE delete_user(IN userid INT) BEGIN DECLARE exit_test CONDITION FOR SQLSTATE '23000'; START TRANSACTION; DELETE FROM user WHERE id=userid; IF ROW_COUNT() = 0 THEN SIGNAL exit_test; END IF; COMMIT; END;
Si une exception se produit lors de l'exécution de la procédure stockée, vous pouvez écrire le code de programme suivant pour la gérer :
DECLARE EXIT HANDLER FOR SQLSTATE '23000' -- 处理异常 END;
6. 🎜🎜#Bien que les procédures stockées puissent améliorer l'efficacité des requêtes SQL, si les procédures stockées ne sont pas conçues de manière raisonnable, cela peut également entraîner une diminution de l'efficacité des requêtes. Voici quelques suggestions d'optimisation pour les procédures stockées :
Évitez d'utiliser trop de variables temporaires et d'instructions de boucle, ce qui réduirait considérablement l'efficacité d'exécution des procédures stockées.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!