· 4 years ago · Jun 15, 2021, 08:34 AM
1-- Procedimientos y funciones
2USE jardineria;
3-- Actividad 8
4DELIMITER $$
5DROP PROCEDURE IF EXISTS cantidad_total_de_productos_vendidos$$
6CREATE PROCEDURE cantidad_total_de_productos_vendidos (
7 IN nombre_producto VARCHAR(70),
8 OUT cantidad_total INT
9)
10BEGIN
11 SELECT
12 COUNT(*)
13 FROM
14 producto INNER JOIN detalle_pedido
15 ON producto.codigo_producto = detalle_pedido.codigo_producto
16 WHERE
17 producto.nombre = nombre_producto
18 INTO cantidad_total;
19END
20$$
21
22DELIMITER ;
23CALL cantidad_total_de_productos_vendidos('Pala', @cantidad_total);
24SELECT @cantidad_total;
25
26-- Actividad 9
27DELIMITER $$
28DROP FUNCTION IF EXISTS calcular_numero_de_productos$$
29CREATE FUNCTION calcular_numero_de_productos (
30 nombre_product VARCHAR(70)
31)
32 RETURNS SMALLINT
33 DETERMINISTIC
34BEGIN
35 DECLARE total_stock INT;
36
37 SELECT
38 cantidad_en_stock
39 FROM
40 producto
41 WHERE
42 nombre = nombre_product
43 INTO total_stock;
44
45 RETURN total_stock;
46END
47$$
48
49DELIMITER ;
50SELECT calcular_numero_de_productos('Pala') AS 'Stock disponible';
51
52-- Triggers
53-- Actividad 10
54DROP TABLE IF EXISTS notificaciones;
55CREATE TABLE notificaciones (
56 id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
57 fecha_hora DATETIME NOT NULL,
58 total DECIMAL(15,2) NOT NULL,
59 codigo_cliente INT NOT NULL,
60 FOREIGN KEY (codigo_cliente) REFERENCES cliente(codigo_cliente)
61);
62
63DELIMITER $$
64DROP TRIGGER IF EXISTS trigger_notificar_pago$$
65CREATE TRIGGER trigger_notificar_pago
66AFTER INSERT ON pago
67FOR EACH ROW
68BEGIN
69 INSERT INTO notificaciones(fecha_hora, total, codigo_cliente)
70 VALUES (NEW.fecha_pago, NEW.total, NEW.codigo_cliente);
71END
72$$
73DELIMITER ;
74INSERT INTO pago VALUES (25, 'PayPal', 'ak-std-011024', '2010-03-12', 2130);
75
76SELECT *
77FROM notificaciones;
78
79SELECT *
80FROM detalle_pedido INNER JOIN producto
81ON producto.codigo_producto = detalle_pedido.codigo_producto
82WHERE producto.nombre = 'Pala';
83
84SELECT cantidad_en_stock
85FROM producto
86WHERE nombre = 'Pala';