
ayuda procedimiento almacenado
Publicado por undertaker (21 intervenciones) el 04/08/2013 01:05:40
Buenas...
La verdad nunca he realizado un procedimiento almacenado en Mysql
y pues necesito realizar uno para quitarme de algunas dudas
Lo que quiero es registrar las ventas de un producto determinado
Lo que no se hacer es recorrer los productos ya que al realizar la venta puede uno optar por mas de un producto, ademas de las validaciones correspondientes tales como la cantidad no puede superar el stock y advertir al pasar el stock minimo
Aca dejo las tablas
y lo que llevo del procedimiento..si me ayudan a terminarlo para continuar aprendiendo
La verdad nunca he realizado un procedimiento almacenado en Mysql
y pues necesito realizar uno para quitarme de algunas dudas
Lo que quiero es registrar las ventas de un producto determinado
Lo que no se hacer es recorrer los productos ya que al realizar la venta puede uno optar por mas de un producto, ademas de las validaciones correspondientes tales como la cantidad no puede superar el stock y advertir al pasar el stock minimo
Aca dejo las tablas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
CREATE TABLE IF NOT EXISTS `detalle` (
`VENTA_FOLIO` int(11) NOT NULL,
`PRODUCTO_ID_PROD` int(11) NOT NULL,
`CANTIDAD` int(11) NOT NULL,
`PRECIO` int(11) NOT NULL,
PRIMARY KEY (`VENTA_FOLIO`,`PRODUCTO_ID_PROD`),
KEY `fk_VENTA_has_PRODUCTO_PRODUCTO1` (`PRODUCTO_ID_PROD`),
KEY `fk_VENTA_has_PRODUCTO_VENTA` (`VENTA_FOLIO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `producto`
--
CREATE TABLE IF NOT EXISTS `producto` (
`ID_PROD` int(11) NOT NULL,
`NOMBRE` varchar(50) NOT NULL,
`PRECIO_PROD` int(11) NOT NULL,
`STOCK` int(11) NOT NULL,
`STOCK_MINIMO` int(11) NOT NULL,
PRIMARY KEY (`ID_PROD`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `venta`
--
CREATE TABLE IF NOT EXISTS `venta` (
`FOLIO` int(11) NOT NULL,
`TOTAL` int(11) NOT NULL,
`DESCUENTO` int(11) NOT NULL,
PRIMARY KEY (`FOLIO`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
y lo que llevo del procedimiento..si me ayudan a terminarlo para continuar aprendiendo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
CREATE PROCEDURE REGISTROVENTAS(
IN V_FOLIO INT,
IN V_CANTIDAD INT,
IN V_DESCUENT INT)
DECLARE
MENSAJE VARCHAR(50);
SUBTOTAL INT;
RESULTADO INT;
BEGIN
SELECT ID_PROD,NOMBRE,PRECIO_PROD,STOCK,STOCK_MINIMO FROM PRODUCTO;
RESULTADO = (V_CANTIDAD * PRECIO_PROD);
IF(STOCK <= 0)
MENSAJE = 'NO HAY STOCK DISPONIBLE PARA EL PRODUCTO';
ELSE IF(STOCK < V_CANTIDAD)
MENSAJE = 'LA CANTIDAD ES MAYOR AL STOCK';
ELSE IF(STOCK_MINIMO < V_CANTIDAD)
MENSAJE = 'LA CANTIDAD ES MAYOR AL STOCK MINIMO';
ELSE IF(DESCUENTO < TOTAL)
MENSAJE = 'EL DESCUENTO ES MAYOR AL PRECIO TOTAL DEL PRODUCTO..NO SE PUEDE DESCONTAR';
ELSE
INSERT INTO VENTA VALUES(V_FOLIO,TOTAL,V_DESCUENTO);
INSERT INTO DETALLE VALUES(V_FOLIO,PRODUCTO_ID_PRODUCTO,V_CANTIDAD,PRECIO)
END IF;
END;
Valora esta pregunta


0