Nueva pregunta

Pregunta:

Fecha: 22-06-2017 10:54:23 (En Español)

Error #1064 al crear un procedimiento almacenado[Resuelta]

Buenas intento hacer un kardex y el proceso de lo movimientos lo quiero realizar con un procedimiento almacenado.

Este es el Modelo relacional de la base de datos:

https://ibb.co/nfRAYQ


Donde producto_cod de la tabla kardex es la id_producto de la tabla producto y el campo concepto es de tipo enum('Entrada','Salida') de la tabla kardex.

El procedimiento que necesito hacer es que cada que ingrese en la tabla kardex un producto con su campo cantidad eje:1 y en la opción concepto es igual a 'Entrada' me actualice la tabla producto con la cantidad ingresad. Lo mismo con la opcion salida.

Eje: si en la tabla producto tengo un producto con la cantidad 5 y en la tabla kardex selecciono el producto y le doy la opción de entrada y en la cantidad ingreso 3 entonces la tabla producto de ese producto la cantidad quedaría en 8, y así mismo en salida ya que en esta se resta.

Actualmente tengo este codigo:

DELIMITER $$
CREATE PROCEDURE ACTUALIZA_STOCK (n_cantidad int,  n_concepto enum, id int)
BEGIN
if n_concepto='Entrada' then
UPDATE producto set cantidad=cantidad+n_cantidad WHERE id_producto=id;
end if
if n_concepto='Salida' then
UPDATE producto set cantidad=cantidad-n_cantidad WHERE id_producto=id;
end if;
END $$ 


pero me sale el sgte error:

#1064 - Algo está equivocado en su sintax cerca ' id int) BEGIN if n_concepto='Entrada' then UPDATE producto set cantidad=cant' en la linea 1


Se les agradecería su ayuda.





Etiquetas: Base de Datos - MySQL - phpMyAdmin - Pregunta Votos: 0 - Respuestas: 1 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 22-06-2017 12:49:18 De tanto buscar y analizar lo solucione, igual colocare la respuesta, de pronto le pueda servir a alguien.

    Tenia dos errores: es que las columnas del tipo ENUM no se crean así, sino con sus valores.

    Del tipo de dato ENUM la documentación de MySQL dice lo siguiente:

    Un ENUM es un objeto de cadena con un valor seleccionado de una lista de valores permitidos que se enumeran explícitamente en la especificación de columna en el momento de la creación de la tabla.

    declaración de n_concepto enum no cumple con esos criterios, por eso el error. También, me falta un punto y coma al final de un if, pero eso es un error menor que se corrige poniendo el punto y coma.

    La salucion fue la sgt:


    DELIMITER $$
    CREATE PROCEDURE ACTUALIZA_STOCK  
    (n_cantidad int, n_concepto enum('Entrada', 'Salida'),  id int) 
    BEGIN 
    if n_concepto='Entrada' then
    UPDATE producto set cantidad=cantidad+n_cantidad WHERE id_producto=id;
    end if;
    if n_concepto='Salida' then
    UPDATE producto set cantidad=cantidad-n_cantidad WHERE id_producto=id;
    end if;
    END;$$ 
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com