Saltar al contenido

¿Hay alguna forma de llamar a un procedimiento almacenado con Dapper?

Poseemos la mejor respuesta que descubrimos por todo internet. Deseamos que te sea de utilidad y si quieres comentarnos alguna mejora siente la libertad de hacerlo..

Solución:

En el caso simple puedes hacer:

var user = cnn.Query("spGetUser", new Id = 1, 
        commandType: CommandType.StoredProcedure).First();

Si quieres algo más elegante, puedes hacer:

 var p = new DynamicParameters();
 p.Add("@a", 11);
 p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
 p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

 cnn.Execute("spMagicProc", p, commandType: CommandType.StoredProcedure); 

 int b = p.Get("@b");
 int c = p.Get("@c"); 

Además, puede usar exec en un lote, pero eso es más complicado.

Creo que la respuesta depende de las características de los procedimientos almacenados que necesite usar.

Los procedimientos almacenados que devuelven un conjunto de resultados se pueden ejecutar utilizando Query; Los procedimientos almacenados que no devuelven un conjunto de resultados se pueden ejecutar usando Execute – en ambos casos (utilizando EXEC ) como el comando SQL (más parámetros de entrada según sea necesario). Consulte la documentación para obtener más detalles.

A partir de la revisión 2d128ccdc9a2, no parece haber soporte nativo para OUTPUT parámetros; podría agregar esto, o alternativamente construir una más compleja Query comando que declaró variables TSQL, ejecutó el SP recopilando OUTPUT parámetros en las variables locales y finalmente los devolvió en un conjunto de resultados:

DECLARE @output int

EXEC  @i = @output OUTPUT

SELECT @output AS output1

Aquí está el código para obtener el retorno de valor del procedimiento Store

Procedimiento almacenado:

alter proc [dbo].[UserlogincheckMVC]    
@username nvarchar(max),    
@password nvarchar(max)
as    
begin    
    if exists(select Username from Adminlogin where Username [email protected] and [email protected])    
        begin        
            return 1  
        end    
    else    
        begin     
            return 0  
        end    
end 

Código:

var parameters = new DynamicParameters();
string pass = EncrytDecry.Encrypt(objUL.Password);
conx.Open();
parameters.Add("@username", objUL.Username);
parameters.Add("@password", pass);
parameters.Add("@RESULT", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
var RS = conx.Execute("UserlogincheckMVC", parameters, null, null, commandType: CommandType.StoredProcedure);
int result = parameters.Get("@RESULT");

Más adelante puedes encontrar las crónicas de otros sys admins, tú igualmente puedes insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *