- Procédure stockée (Stored Procedure) : logique SQL écrite à l’avance dans la base de données, appelée directement par l’application.
- Point‑clé pour appeler une procédure stockée avec Dapper : indiquer
CommandType.StoredProcedure. - Passez les paramètres par classe anonyme ou objet entité ; les paramètres d’entrée de la procédure stockée sont mappés automatiquement.
- Exemple pratique : créer une procédure stockée MySQL pour supprimer un enregistrement étudiant par identifiant.
Créer une procédure stockée MySQL
-- Créer la procédure stockée de suppression d'étudiant
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
DELETE FROM student WHERE Id = id;
END
IN id int: paramètre d’entrée, reçoit l’identifiant de clé primaire à supprimer- BEGIN ~ END : corps principal de la procédure stockée
DROP PROCEDURE IF EXISTS Delete_Student_PROC;
Appeler la procédure stockée
using System.Data;
using MySql.Data.MySqlClient;
using Dapper;
using System.Configuration;
static void Main(string[] args)
{
var connStr = ConfigurationManager.ConnectionStrings["StudentConnection"].ConnectionString;
using (IDbConnection db = new MySqlConnection(connStr))
{
-- Notes sur les paramètres:
-- 1er argument: nom de la procédure stockée
-- 2e argument: paramètres à transmettre
-- 3e argument: il faut explicitement définir le type de commande sur procédure stockée
int affectedRows = db.Execute(
"Delete_Student_PROC",
new { id = 2 },
commandType: CommandType.StoredProcedure
);
Console.WriteLine($"Nombre de lignes affectées : {affectedRows}");
}
Console.ReadKey();
}Langage du code : JavaScript (javascript)
Procédure stockée qui renvoie des résultats
Si la procédure stockée retourne des données de requête, utilisez .Query<T>()
List<Student> list = db.Query<Student>(
"GetAllStudent_PROC",
null,
commandType: CommandType.StoredProcedure
).ToList();Langage du code : PHP (php)
- SQL classique :
commandType: CommandType.Text(valeur par défaut, peut être omis) - Procédure stockée :
commandType: CommandType.StoredProcedure(à indiquer obligatoirement)
Procédures stockées avec Dapper
Previous: Opération de suppression Dapper
Next: Requête IN