• Welcome to Test Foro de elhacker.net SMF 2.1.
 

Asignacion de variables a cursor mysql

Started by d91, 15 September 2019, 18:57 PM

0 Members and 1 Guest are viewing this topic.

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.

Code (sql) Select

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
Code (sql) Select

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