Sunteți pe pagina 1din 3

CREATE DATABASE IF NOT EXISTS bdtutorial; USE bdtutorial; CREATE TABLE producto ( codigoProducto int(11) NOT NULL, nombre

varchar(100) NOT NULL, precio decimal(18,2) NOT NULL, PRIMARY KEY (codigoProducto) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE venta( codigoVenta int(11) NOT NULL, cliente varchar(100) NOT NULL, fecha datetime NOT NULL, PRIMARY KEY (codigoVenta) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE detalleventa( codigoVenta int(11) NOT NULL, codigoProducto int(11) NOT NULL, cantidad decimal(18,2) NOT NULL, descuento decimal(18,2) NOT NULL, PRIMARY KEY(codigoVenta,codigoProducto), KEY FK_Det_Prod(codigoProducto), CONSTRAINT FK_Det_Prod FOREIGN KEY (codigoProducto) REFERENCES producto (codigoProducto), CONSTRAINT FK_Det_Venta FOREIGN KEY (codigoVenta) REFERENCES venta (codigoVenta) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; DELIMITER $$ CREATE DEFINER=root@locathost PROCEDURE spl_producto( INOUT _ CODIGOpRODUCTO int, _nombre varchar(100) , _precio decimal(18,2)) BEGIN -- Genera una especie de autoincrementar pero yo controlo los -- que genero SELECT IFNULL(MAX(codigoProducto),0)+1 into _codigoProducto FROM producto; INSERT INTO producto(codigoProducto,nombre,precio) VALUES (_codigoProducto,_nombre,_precio); END $$ DELIMITER ; -- Procedimiento 2 DELIMITER $$ CREATE DEFINER=root@localhost PROCEDURE spU_producto( _codigoProducto int, _nombre varchar(100), _precio decimal(18,2)) BEGIN UPDATE producto SET nombre=_nombre, precio=_precio WHERE codigoProducto = _codigoProducto; END $$ DELIMITER ; -- procedimiento 3 DELIMITER $$

CREATE DEFINER=root@localhost PROCEDURE spF_producto_all() BEGIN SELECT p.codigoProducto,p.nombre,p.precio FROM producto p ORDER BY P.nombre; END $$ DELIMITER ; -- procedimiento 4 DELIMITER $$ CREATE DEFINER=root@localhost PROCEDURE spF_producto_one( _codigoroducto int) BEGIN SELECT p.codigoProducto,p.nombre,p.precio FROM producto p WHERE p.codigoProducto = _codigoProducto ORDER BY P.nombre; END$$ DELIMITER -- Tabla Ventas -- Procedimiento almacenado para insertar una ventana DELIMITER $$ CREATE DEFINER=root@loclhost PROCEDURE spl_venta( INOUT _codigoVenta int . _cliente varchar(100)) BEGIN -- Codigo autogenerado SELECT IFNULL(MAX(codigoVenta),0)+1 into _codigoVenta FROM venta; INSERT INTO venta(codigoVenta,cliente,fecha) VALUES(_codigoVenta,_cliente, CURDATE()); END $$ DELIMITER ; DELIMITER $$ CREATE DEFINER=root@localhost PROCEDURE spF_venta_All() BEGIN SELECT v.codigoVenta AS CodigoVenta, v.cliente AS Cliente, v.fecha AS Fecha d.codigoProducto AS CodigoProducto, p.nombre AS Nombre,p.precio AS Precio, d.cantidad AS Cantidad,d.descuento AS Descuento, p.precio*d.cantidad AS Parcial, ((p.precio*d.cantidad)-d.descuento) AS SubTotal, (SELECT SUM((dT.cantidad*pT.precio)-dT.descuento) AS Total Pagar FROM DetalleVenta AS dT INNER JOIN Producto AS pT ON dT.codigoProducto= pT.codigoProducto WHERE dT.codigoVenta=v.codigoVenta=d.codigoVenta INNER JOIN Producto AS p ON d.codigoProducto=p.codigoProducto ORDER BY CodigoVenta, Nombre; END $$ DELIMITER; DELIMITER $$ CREATE DEFINER=root@locaLhost PROCEDURE spF_venta_one( _codigoVenta int) BEGIN SELECT v.codigoVenta,v.clientev.fecha,d.codigoProducto, p.nombre,p.precio,d.cantidad,d,descueto, p.precio*d.cantidad AS Parcial, ((p.precio*d.cantidad*pT.precio)-d.descuento) AS SubTotal,

(SELECT SUM((dT.cantidad*pT.precio)-dT.descuento) AS TotalPagar FROM DetalleVenta AS dT INNER JOIN Producto AS pT ON dT.codigoProducto=pT.codigoProducto WHERE dT.codigoVenta=v.codigoVenta) AS TotalPagar FROM Venta AS v INNER JOIN DetalleVenta AS d ON v.codigoVenta=d.codigoVenta INNER JOIN Producto AS pON d.codigoProducto=p.codigoProducto WHERE v.codigoVenta=_ccidgoVenta ORDER BY Nombre; END $$ DELIMITER ; DELIMITER $$ CREATE DEFINER=root@locaLhost PROCEDURE spl_detalleventa( _codigoVenta int, _codigoProducto int , _cantidad decimal (18,2) , _descuento decimal(18,2)) BEGIN INSERT INTO detalleventa(codigoVenta,codigoProducto,cantidad,desceunto) VALUES (_codigoVenta,_codigoProducto,_cantida,_descuento); END $$ DELIMITER;

S-ar putea să vă placă și