Pour créer une procédure stockée dans MySQL, vous utilisez l'instruction CREATE PROCEDURE
. Voici un guide étape par étape sur la façon de procéder:
CREATE PROCEDURE
suivie du nom de votre procédure.IN
, OUT
ou INOUT
, et chaque paramètre a besoin d'un type de données.BEGIN
et END
. Dans ce bloc, vous écrivez les instructions SQL que la procédure exécutera.;
) comme terminateur d'instruction. Cependant, lors de la création de procédures stockées, vous devez modifier temporairement ce délimiteur pour éviter les conflits avec les demi-colons utilisés dans l'organisme de procédure. En règle générale, //
ou $$
sont utilisés comme délimiteurs alternatifs.Voici un exemple de la façon de créer une procédure stockée simple:
<code class="sql">DELIMITER // CREATE PROCEDURE GetEmployeeData( IN employeeID INT ) BEGIN SELECT * FROM employees WHERE id = employeeID; END // DELIMITER ;</code>
Dans cet exemple, GetEmployeeData
est une procédure qui prend un employeeID
en tant que paramètre d'entrée et renvoie toutes les données pour cet employé du tableau employees
.
Les procédures stockées par MySQL peuvent inclure des paramètres de différents types et modes. Les paramètres peuvent être classés en trois modes:
IN
vous permet de transmettre une valeur dans la procédure. La procédure peut lire cette valeur mais ne peut pas la modifier.OUT
permet à la procédure de renvoyer une valeur à l'environnement d'appel. La procédure peut modifier la valeur d'un paramètre OUT
et la valeur modifiée est accessible après l'exécution de la procédure.INOUT
combine les propriétés de IN
et OUT
. Il vous permet de transmettre une valeur dans la procédure et permet également à la procédure de modifier la valeur et de la renvoyer dans l'environnement d'appel. Les paramètres peuvent également avoir des types de données tels que INT
, VARCHAR
, DATE
, ETC., qui doivent être spécifiés lors de leur déclaration. Voici un exemple de procédure stockée avec les trois types de paramètres:
<code class="sql">DELIMITER // CREATE PROCEDURE ProcessEmployeeData( IN empID INT, OUT empName VARCHAR(100), INOUT empSalary DECIMAL(10, 2) ) BEGIN SELECT first_name, last_name INTO empName FROM employees WHERE id = empID; UPDATE employees SET salary = empSalary 1000 WHERE id = empID; SELECT salary INTO empSalary FROM employees WHERE id = empID; END // DELIMITER ;</code>
Pour modifier une procédure stockée existante dans MySQL, vous utilisez l'instruction ALTER PROCEDURE
. Cependant, ALTER PROCEDURE
est limitée à la modification de certains attributs de la procédure, tels que ses caractéristiques (comme le contexte de sécurité ou la sécurité SQL). Pour modifier le code ou la logique réel dans la procédure, vous devez utiliser la DROP PROCEDURE
et CREATE PROCEDURE
.
Voici comment le faire:
<code class="sql">DROP PROCEDURE IF EXISTS ProcedureName;</code>
<code class="sql">DELIMITER // CREATE PROCEDURE ProcedureName( -- Parameters ) BEGIN -- New procedure body END // DELIMITER ;</code>
Par exemple, si vous souhaitez mettre à jour la procédure GetEmployeeData
pour ne retourner que les prénoms et les noms de famille d'un employé, vous feriez ce qui suit:
<code class="sql">DROP PROCEDURE IF EXISTS GetEmployeeData; DELIMITER // CREATE PROCEDURE GetEmployeeData( IN employeeID INT ) BEGIN SELECT first_name, last_name FROM employees WHERE id = employeeID; END // DELIMITER ;</code>
Les procédures stockées offrent plusieurs avantages pour la gestion des bases de données dans MySQL:
En tirant parti de ces avantages, les procédures stockées peuvent améliorer considérablement l'efficacité et la sécurité de la gestion des bases de données dans 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!