Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ayuda con Procedimiento Almacenado.

Estas en el tema de Ayuda con Procedimiento Almacenado. en el foro de Mysql en Foros del Web. A ver amigos si me pueden echar una mano con el siguiente procedimiento. Lo que hace el procedimiento es verificar la cantidad de un item ...
  #1 (permalink)  
Antiguo 21/09/2010, 21:30
 
Fecha de Ingreso: septiembre-2009
Ubicación: Cuenca
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta Ayuda con Procedimiento Almacenado.

A ver amigos si me pueden echar una mano con el siguiente procedimiento.
Lo que hace el procedimiento es verificar la cantidad de un item y luego le suma la cantidad que se ingresa en la Orden de compra.

DROP PROCEDURE `SumaCantEntraItem`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `SumaCantEntraItem`(IN codi varchar(20),IN cantidad int)
begin
declare CantItem int;
declare Total int;
set CantItem =(select cantidad from items where codigo=codi);
if CantItem >= 0 then
set Total = (CantItem + cantidad );
update items set cantidad=Total where codigo=codi;
end if;
end

El problema es que no me doy cuenta donde anda mal, y no me esta sumando la cantidad.
  #2 (permalink)  
Antiguo 22/09/2010, 03:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ayuda con Procedimiento Almacenado.

Yo la dejaría así:
Código MySQL:
Ver original
  1. DELIMITER//
  2. DROP PROCEDURE `SumaCantEntraItem`//
  3. CREATE PROCEDURE `SumaCantEntraItem`(IN codi varchar(20),IN vcantidad int)
  4.      UPDATE items
  5.      SET cantidad = cantidad +  vcantidad
  6.      WHERE codigo = codi AND cantidad >=0;
  7. END //
  8. DELIMITER;
El resto del código es superfluo.
El problema central es que estabas usando el mismo nombre (cantidad) para la variable de entrada que para el campo, y eso hace que MySQL confunda cuál debe usar. Como el campo tiene mayor jerarquía lógica, entonces lo que hace es usar el propio valor del campo para ponerselo... al mismo campo.

No uses los mismos nombres en las variables que en los objetos de la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/09/2010, 10:36
 
Fecha de Ingreso: septiembre-2009
Ubicación: Cuenca
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Ayuda con Procedimiento Almacenado.

Muchas gracias mi amigo ya me funciono al pelo. Gracias por el consejo..
Salu2.

Etiquetas: procedimiento, 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




La zona horaria es GMT -6. Ahora son las 04:23.