Principales respuestas
Traer diferentes tipos de valores(int, decimal) de un procedimento almacenado a c#

Pregunta
-
Tengo un procedimiento almacenado donde poseo 3 parámetros de salida, 1 parámetro es tipo Int y los otros 2 tipo Decimal,el cual me los traigo del mismo procedimiento, pero a la hora de pasarlo a C# para mostrar los parámetros, no se como podría hacer la función ya que siempre lo he hecho con un solo tipo de dato, ya sea int o string, nunca he "rescatado" de un mismo procedimiento 2 tipos diferentes de datos. ¿Cómo podrá hacerlo? siempre he hecho es así:
public string traerValor() { using (var conexionN = new SqlConnection(conexionBD.ConexionBasesD())) { comando.Connection = conexionN; comando.CommandText = "sp_EliminarProductos"; comando.CommandType = CommandType.StoredProcedure; comando.Parameters.AddWithValue("@idProducto", parametros.Idproducto); comando.Parameters.AddWithValue("@estado", parametros.Estado); SqlParameter param = new SqlParameter("@mensaje", SqlDbType.VarChar, 67); param.Direction = ParameterDirection.Output; comando.Parameters.Add(param); comando.ExecuteNonQuery(); string mensaje = ""; return mensaje = Convert.ToString(comando.Parameters["@mensaje"].Value); } }
Si es un string que hay que traer coloco public string, si es un int, public int, pero nunca me he traído 2 de tipo diferente.
PD: el código que muestro es un ejemplo de como me he traído parámetros de salida tipo string.- Editado NathalyChR lunes, 24 de agosto de 2020 20:12
Respuestas
-
hola
Tienes que crear una class
public class Result{ public string mensaje {get;set;} public int param1 {get;set;} public int param2 {get;set;} }
entonces usarias
public Result traerValor() { var result = new Result(); using (var conexionN = new SqlConnection(conexionBD.ConexionBasesD())) { var comando = new SqlCommand("NombreProcedure", conexionN); //resto codigo comando.ExecuteNonQuery(); result.mensaje = Convert.ToString(comando.Parameters["@mensaje"].Value); result.param1 = Convert.ToInt32(comando.Parameters["@param1"].Value); result.param2 = Convert.ToInt32(comando.Parameters["@param2"].Value); } return result; }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta EricRRModerator lunes, 24 de agosto de 2020 23:13
Todas las respuestas
-
hola
Tienes que crear una class
public class Result{ public string mensaje {get;set;} public int param1 {get;set;} public int param2 {get;set;} }
entonces usarias
public Result traerValor() { var result = new Result(); using (var conexionN = new SqlConnection(conexionBD.ConexionBasesD())) { var comando = new SqlCommand("NombreProcedure", conexionN); //resto codigo comando.ExecuteNonQuery(); result.mensaje = Convert.ToString(comando.Parameters["@mensaje"].Value); result.param1 = Convert.ToInt32(comando.Parameters["@param1"].Value); result.param2 = Convert.ToInt32(comando.Parameters["@param2"].Value); } return result; }
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta EricRRModerator lunes, 24 de agosto de 2020 23:13
-
Hola NathalyChR,
¿Alguna novedad sobre la consulta realizada?
Espero su respuesta.
Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte.
Gracias por usar los foros de MSDN.
Eric Ruiz
____________________________
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.
-
-