- Gespeicherte Prozedur (Stored Procedure): SQL‑Logik wird direkt in der Datenbank hinterlegt und von der Anwendung aufgerufen.
- Wichtiger Punkt für Dapper‑Aufrufe von gespeicherten Prozeduren:
CommandType.StoredProcedurefestlegen. - Parameter werden über anonyme Klassen oder Entity‑Objekte übergeben; Eingabeparameter der Prozedur werden automatisch zugeordnet.
- Beispielszenario: MySQL‑Prozedur erstellen, um student‑Datensätze anhand der ID zu löschen.
MySQL‑Gespeicherte Prozedur anlegen
-- Gespeicherte Prozedur zum Löschen von Schüler‑Datensätzen erstellen
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
DELETE FROM student WHERE Id = id;
ENDCode-Sprache: JavaScript (javascript)
IN id int: Eingabeparameter, nimmt die Primärschlüssel‑ID für den Löschvorgang entgegen- BEGIN ~ END: Hauptteil der gespeicherten Prozedur
DROP PROCEDURE IF EXISTS Delete_Student_PROC;
Gespeicherte Prozedur aufrufen
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))
{
// Hinweise zu den Parametern:
// 1. Argument: Name der gespeicherten Prozedur
// 2. Argument: zu übergebende Werte
// 3. Argument: Befehlstyp muss explizit auf Gespeicherte Prozedur gesetzt werden
int affectedRows = db.Execute(
"Delete_Student_PROC",
new { id = 2 },
commandType: CommandType.StoredProcedure
);
Console.WriteLine($"Betroffene Zeilen: {affectedRows}");
}
Console.ReadKey();
}Code-Sprache: JavaScript (javascript)
Prozedur mit Ergebnisrückgabe
Verwenden Sie .Query<T>(), falls die Prozedur Datensätze abfragt
List<Student> list = db.Query<Student>(
"GetAllStudent_PROC",
null,
commandType: CommandType.StoredProcedure
).ToList();Code-Sprache: PHP (php)
- Normales SQL:
commandType: CommandType.Text(Standardwert, kann weggelassen werden) - Gespeicherte Prozedur:
commandType: CommandType.StoredProcedure(muss explizit angegeben werden)
Gespeicherte Prozeduren mit Dapper
Previous: Dapper Löschvorgang
Next: IN‑Abfrage