Maison >base de données >tutoriel mysql >Qu'est-ce que la procédure stockée MySQL
Procédure stockée mysql : Tout d'abord, l'instruction SQL du langage de base de données doit être compilée avant l'exécution, puis exécutée, et la procédure stockée est un ensemble d'instructions SQL pour compléter une fonction spécifique, qui est compilée et stockée dans le 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.
Plus de recommandations d'apprentissage gratuites connexes : tutoriel mysql (Vidéo)
Introduction aux procédures stockées
Notre langage de base de données d'exploitation couramment utilisé Les instructions SQL doivent d'abord être compilées, puis exécutées une fois exécutées, et une procédure stockée (Stored Procedure) est un ensemble d'instructions SQL pour remplir une fonction spécifique. Elle est compilée et stockée dans la base de données. L'utilisateur l'appelle en spécifiant le nom de la procédure stockée et en donnant des paramètres (si la procédure stockée l'a). paramètres). Exécutez-le.
Une procédure stockée est une fonction programmable qui est créée et enregistrée dans la base de données. Il peut s'agir d'instructions SQL et de certaines structures de contrôle spéciales. 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 orientée objet en programmation. Il permet de contrôler la manière dont les données sont accessibles.
Les procédures stockées présentent généralement les avantages suivants :
Les procédures stockées améliorent la fonctionnalité et la flexibilité du langage SQL. Les procédures stockées peuvent être écrites à l'aide d'instructions de contrôle de flux, sont très flexibles et peuvent effectuer des jugements complexes et des opérations plus complexes.
Les procédures stockées permettent de programmer des composants standards. 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.
Les procédures stockées peuvent atteindre une 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.
Les procédures stockées peuvent réduire le trafic réseau. Pour les opérations sur le même objet de base de données (telles qu'une requête, une modification), si l'instruction Transaction-SQL impliquée dans cette opération est organisée en procédure stockée, alors lorsque la procédure stockée est appelée sur l'ordinateur client, seul l'appel est transmis via les instructions du réseau, augmentant ainsi considérablement le trafic réseau et réduisant la charge du réseau.
Les procédures stockées peuvent être pleinement utilisées comme mécanisme de sécurité. En restreignant les autorisations d'exécution d'une certaine procédure stockée, l'administrateur système peut limiter les autorisations d'accès aux données correspondantes, empêcher les utilisateurs non autorisés d'accéder aux données et assurer la sécurité des données.
À propos des procédures stockées de MySQL
Les procédures stockées sont une fonction importante du stockage de base de données, mais MySQL ne prenait pas en charge les procédures stockées avant la version 5.0, ce qui faisait de MySQL dans l'application de grosses remises . Heureusement, MySQL 5.0 a enfin commencé à prendre en charge les procédures stockées, ce qui peut considérablement 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édure stockée MySQL
(1)Format
Format de création de procédure stockée MySQL : CREATE PROCEDURE 过程名 ([过程参数[,...]]) [特性 ...] 过程体
mysql> DELIMITER // mysql> CREATE PROCEDURE proc1(OUT s int) -> BEGIN -> SELECT COUNT(*) INTO s FROM user; -> END -> // mysql> DELIMITER ;Remarque : Ce qui doit être noté ici est DELIMITER // et DELIMITER ;. nous ne déclarons pas de délimiteur, le compilateur traitera la procédure stockée comme une instruction SQL et le processus de compilation de la procédure stockée signalera une erreur. Par conséquent, nous devons utiliser le mot-clé DELIMITER pour déclarer à l'avance le délimiteur de segment actuel. que MySQL ";" est traité comme du code dans une procédure stockée. Après utilisation, le séparateur doit être restauré. La procédure stockée peut avoir des paramètres d'entrée, de sortie, d'entrée et de sortie selon les besoins. Il existe un paramètre de sortie s, le type est int. S'il y a plusieurs paramètres, utilisez "," pour les séparer. Le début et la fin du corps du processus sont marqués par BEGIN et END. (2). Séparateur de déclaration En fait, concernant le séparateur de déclaration, l'annotation ci-dessus a été écrite très clairement. Il n'est pas nécessaire d'en dire plus, mais une chose à noter est : si c'est le cas Lorsque vous utilisez l'outil de gestion de l'administrateur MySQL, vous pouvez le créer directement et vous n'avez plus besoin de le déclarer. (3).Paramètres
IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数:该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数:调用时指定,并且可被改变和返回
代码示例
header('Content-Type:text/html;charset=UTF-8'); $conn = mysql_connect('localhost','root','123456') or die ("数据连接错误!!!"); mysql_select_db('test',$conn);
实例一:无参的存储过程
$sql = "create procedure myproce() begin INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0'); end; "; $res = mysql_query($sql);//创建一个myproce的存储过程 $sql = "call test.myproce();"; $res = mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。 var_dump($res);
实例二:传入参数的存储过程
//$sql = "create procedure myproce2(in score int) //begin //if score >= 60 then //select 'pass'; //else //select 'no'; //end if; //end; //"; //mysql_query($sql);//创建一个myproce2的存储过程 //$sql = "call test.myproce2(90);"; //$reslut = mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。 //$array = mysql_fetch_array($reslut); //var_dump($array);
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!