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.