- Procedimento armazenado (Stored Procedure): lógica SQL criada previamente no banco de dados, chamada diretamente pela aplicação.
- Ponto‑chave para chamar procedimentos armazenados no Dapper: definir
CommandType.StoredProcedure. - Os parâmetros são passados com classes anônimas ou objetos de entidade; os parâmetros de entrada do procedimento são mapeados automaticamente.
- Cenário de exemplo: criar um procedimento armazenado MySQL para excluir registros da tabela student por ID.
Criar procedimento armazenado MySQL
-- Criar procedimento armazenado para exclusão de estudante
CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_Student_PROC`(IN `id` INT)
BEGIN
DELETE FROM student WHERE Id = id;
ENDCode language: JavaScript (javascript)
IN id int: parâmetro de entrada, recebe o valor da chave primária para exclusão- BEGIN ~ END: corpo principal do procedimento armazenado
DROP PROCEDURE IF EXISTS Delete_Student_PROC;
Invocar o procedimento armazenado
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))
{
-- Observações sobre os parâmetros:
-- 1º argumento: nome do procedimento armazenado
-- 2º argumento: parâmetros de entrada
-- 3º argumento: é obrigatório definir o tipo de comando como procedimento armazenado
int affectedRows = db.Execute(
"Delete_Student_PROC",
new { id = 2 },
commandType: CommandType.StoredProcedure
);
Console.WriteLine($"Linhas afetadas: {affectedRows}");
}
Console.ReadKey();
}Code language: JavaScript (javascript)
Procedimento armazenado com retorno de resultados
Use .Query<T>() quando o procedimento retornar dados de consulta
List<Student> list = db.Query<Student>(
"GetAllStudent_PROC",
null,
commandType: CommandType.StoredProcedure
).ToList();Code language: PHP (php)
- SQL comum:
commandType: CommandType.Text(valor padrão, pode ser omitido) - Procedimento armazenado:
commandType: CommandType.StoredProcedure(precisa ser declarado explicitamente)
Procedimentos armazenados com Dapper
Previous: Operação de exclusão com Dapper
Next: Consulta IN