Asignacion de variables a cursor mysql

Iniciado por d91, 15 Septiembre 2019, 18:57 PM

0 Miembros y 1 Visitante están viendo este tema.

d91

Hola a todos, estoy tratando de auditar el incremento del stock del inventario al realizar una compra, pero no he logrado asignar la variable del where del cursor, al parecer en mysql no se pueden pasar variables como parametros a los cursores. Ya que cuando activo el cursor la variable v_producto esta vacia.

Código (sql) [Seleccionar]

CREATE TRIGGER Compra_Producto AFTER INSERT ON `detalle_compra` FOR EACH ROW
                BEGIN
                    DECLARE v_stock int;
                    DECLARE v_cantidad int;
                    DECLARE v_total int;
                    DECLARE v_producto bigint;

                    DECLARE cursor_compra CURSOR FOR
                        SELECT stock from inventario where producto_id = v_producto;

                    set @v_producto = NEW.producto_id;
                    set @v_cantidad = NEW.cantidad;

                    OPEN cursor_compra;

                    LOOP
                        FETCH cursor_compra INTO v_stock;
                    END LOOP;

                    CLOSE cursor_compra;

                    set @v_total = v_stock + v_cantidad;
                   
                    UPDATE inventario set stock = v_total where producto_id = v_producto;

                END


d91

Hola, lo logre resolver de una un poco más sencilla, pero estoy pensando como devolver una excepcion en caso de disminuir el inventario en caso la cantidad que se egresa sea mayor al stock existente
Código (sql) [Seleccionar]

CREATE TRIGGER Compra_Producto AFTER INSERT ON `detalle_compra` FOR EACH ROW
                BEGIN
                   
                    UPDATE inventario set stock = (stock + NEW.cantidad) where producto_id = NEW.producto_id;

                END