Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/02/2012, 10:42
Avatar de jmacc
jmacc
 
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 94
Antigüedad: 17 años, 2 meses
Puntos: 6
Pregunta Procedimiento Almacenado

Que onda banda les dejo un ejemplo de un Procedimiento almacenado que uso, el cual tengo un problema.
No se realiza de manera correcta.
Al realizar la llamada al Procedimiento primero debe de verificar que el codigo y la descripcion no esten .

Tabla:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `cantidades` (
  2.   `CantId` int(100) NOT NULL AUTO_INCREMENT,
  3.   `CantCantidad` int(100) NOT NULL,
  4.   `CantClaveProducto` int(100) NOT NULL,
  5.   `CantFiltro` varchar(100) NOT NULL,
  6.   PRIMARY KEY (`CantId`)
  7. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Manejo de Cantidades de Productos'

Valores

Código MySQL:
Ver original
  1. INSERT INTO `cantidades` (`CantId`, `CantCantidad`, `CantClaveProducto`, `CantFiltro`) VALUES
  2. (1, 1, 10, 'Cat1'),
  3. (2, 1, 10, 'Cat1');

En caso de si estar la misma clave del producto,(CantClaveProducto) y el filtro (CantFiltro) solo se actualiza la cantidad
En caso de no estar se inserta el registro.

Mi Procedimiento Almacenado es el Siguiente:
Código MySQL:
Ver original
  1. REATE DEFINER=`root`@`localhost` PROCEDURE `aes_cantidades`(IN A INT,IN B INT,IN C VARCHAR(100))
  2. DECLARE consulta int;
  3.    
  4. SET consulta=("select CantCantidad, CantClaveProducto, CantFiltro from cantidades
  5. where CantClaveProducto=B AND CantFiltro=C");
  6.     if consulta='1' THEN
  7.          BEGIN
  8.             UPDATE cantidades set CantCantidad=A WHERE CantClaveProducto=B AND CantFiltro=C;
  9.         END;
  10.    ELSE
  11.         BEGIN
  12.             insert into cantidades (CantCantidad,CantClaveProducto,CantFiltro) values (A,B,C);
  13.         END;
  14.    END if ;

Espero me puedan echar uan mano para buscar el detalle, de antemano gracias.