Foros del Web » Programación para mayores de 30 ;) » .NET »

Procedimiento almacenado devuelve valor, como recuperar el valor?

Estas en el tema de Procedimiento almacenado devuelve valor, como recuperar el valor? en el foro de .NET en Foros del Web. Que tal a todos, tengo el siguiente StoreProcedure llamado inve_obtiene_total_compra , el cual se le pasan 2 parametros que es el tipo de compra y ...
  #1 (permalink)  
Antiguo 09/08/2012, 11:19
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 9 años, 1 mes
Puntos: 0
Sonrisa Procedimiento almacenado devuelve valor, como recuperar el valor?

Que tal a todos, tengo el siguiente StoreProcedure llamado
inve_obtiene_total_compra , el cual se le pasan 2 parametros que es el tipo de compra y el codigo de la compra, y se utiliza para calcular el total de la compra, (estilo Facturacion con Encabezado/Detalle), y devuelve lo que es el total de la compra realizada, pero mi duda es como lo llamo desde VB NET 2010 con ODBC y que el valor del total lo despliegue en un textbox

Código:
create proc inve_obtiene_total_compra
  @codigo_tipo_compra  int = 0 ,
 @codigo_de_compra    int = 0 ,
 @total_calculado     float = 0 output
 
  as
 select @total_calculado = sum(A.CANTIDAD_A_INGRESAR * A.COST_UNIT_COMPRAS)
 from COMPRAS_DET A
 where (@codigo_tipo_compra = A.CODIGO_TIPO_COMPRA AND
        @codigo_de_compra   = A.CODIGO_DE_COMPRA)
 return
usualmente llamo los procedimientos almacenados que no devuelven valores asi:

Código:
Dim comandoODBC As OdbcCommand = New OdbcCommand("{call zzz_CrearAlumno (?,?)}", conexionODBC)

comandoODBC.Parameters.AddWithValue("@ID", txtID.Text)
comandoODBC.Parameters.AddWithValue("@NOMBRE", txtNombre.Text)
	
conexionODBC.Open()
comandoODBC.ExecuteNonQuery()
conexionODBC.Close()
Saludos y gracias por la futura ayuda
  #2 (permalink)  
Antiguo 09/08/2012, 11:44
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 11 años, 2 meses
Puntos: 267
Respuesta: Procedimiento almacenado devuelve valor, como recuperar el valor?

Hola Jamsito.
Pues solamente es 1 linea que tienes que modificar, la funcion se llama ExecuteScalar, pero ojo esto devuelve una cadena(String), asi que si es un numero lo que traes, tienes que hacerle su conversion previa :
Código vb:
Ver original
  1. Dim numero As Integer
  2. numero = Convert.ToInt32(comandoODBC.ExecuteScalar())
Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 09/08/2012, 11:46
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Procedimiento almacenado devuelve valor, como recuperar el valor?

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola Jamsito.
Pues solamente es 1 linea que tienes que modificar, la funcion se llama ExecuteScalar, pero ojo esto devuelve una cadena(String), asi que si es un numero lo que traes, tienes que hacerle su conversion previa :
Código vb:
Ver original
  1. Dim numero As Integer
  2. numero = Convert.ToInt32(comandoODBC.ExecuteScalar())
Saludos!.

Ok Gracias voy a probar
  #4 (permalink)  
Antiguo 09/08/2012, 11:56
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 13 años, 3 meses
Puntos: 220
Respuesta: Procedimiento almacenado devuelve valor, como recuperar el valor?

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola Jamsito.
Pues solamente es 1 linea que tienes que modificar, la funcion se llama ExecuteScalar, pero ojo esto devuelve una cadena(String), asi que si es un numero lo que traes, tienes que hacerle su conversion previa :
Código vb:
Ver original
  1. Dim numero As Integer
  2. numero = Convert.ToInt32(comandoODBC.ExecuteScalar())
Saludos!.
Solo para aclarar algunas cosas para que el error no se pasa de una a otra persona, primero el ExecuteScalar no devuelve un String sino un tipo Object.

Segundo si en caso tu ExecuteScalar no devuelve nada generara error al tratar de convertir un null a integer, siempre cuando uno recibe un tipo de variable Object debe validar que este no sea null o nothing ya que si trabajamos con casting estariamos generando errores fatales
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #5 (permalink)  
Antiguo 09/08/2012, 12:05
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 11 años, 2 meses
Puntos: 267
Respuesta: Procedimiento almacenado devuelve valor, como recuperar el valor?

Cita:
Iniciado por Dradi7 Ver Mensaje
Solo para aclarar algunas cosas para que el error no se pasa de una a otra persona, primero el ExecuteScalar no devuelve un String sino un tipo Object.

Segundo si en caso tu ExecuteScalar no devuelve nada generara error al tratar de convertir un null a integer, siempre cuando uno recibe un tipo de variable Object debe validar que este no sea null o nothing ya que si trabajamos con casting estariamos generando errores fatales
A tener en cuenta Gracias Dradi, lo de las validaciones en caso no genere no lo tome en cuenta a mencionarlo. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #6 (permalink)  
Antiguo 09/08/2012, 13:35
Avatar de Jamsito  
Fecha de Ingreso: agosto-2012
Mensajes: 28
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Procedimiento almacenado devuelve valor, como recuperar el valor?

Ok gracias Dradi7 voy a validar antes de convertirlo

Saludos

Etiquetas: net, procedimiento, regresar, vb, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:14.