
PROCEDIMIENTOS Y CURSORES
Publicado por SQL (1 intervención) el 19/05/2015 13:35:51
Para la gestión de un Restaurante de comida Andaluza, se crea una BD para almacenar los datos de los distintos platos que conforman la carta y de los clientes que asisten diariamente al mismo.
Esta son las create table:
Y esto son los datos que me pide:
1. Función a la que pasemos el nombre de un plato y nos devuelva el precio del mismo.
2. Haciendo uso de esta función actualiza el precio de los platos de la carta del Restaurante, que inicialmente están a 0 o NULL.
4. Procedimiento al que pasemos el nombre de un cliente y una fecha. Nos debe visualizar los datos de la consumición que ha realizado y el importe final teniendo en cuenta que debemos añadir el 21% de IVA.
5. Diseña un procedimiento para controlar los posibles errores que se puedan dar al insertar una nueva consumición. Se debe tener en cuenta que el nº de personas para una consumición no debe ser superior a 5 y que la fecha de consumición debe ser la de hoy.
Esta son las create table:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
CREATE TABLE PLATO
(COD_PLATO NUMBER(3),
NOMBRE_PLATO VARCHAR2(50),
PRECIO NUMBER(5,2),
CONSTRAINT PK_PLATO PRIMARY KEY (COD_PLATO)
);
CREATE TABLE INGREDIENTE
(COD_INGREDIENTE NUMBER(3),
NOMBRE_INGREDIENTE VARCHAR2(50),
PRECIO_KG NUMBER(5,2),
CONSTRAINT PK_INGREDIENTE PRIMARY KEY (COD_INGREDIENTE)
);
CREATE TABLE COMPUESTO
(COD_PLATO NUMBER(3),
COD_INGREDIENTE NUMBER(3),
PESO_GRS NUMBER(5,2),
CONSTRAINT PK_COMPUESTO PRIMARY KEY (COD_PLATO, COD_INGREDIENTE),
CONSTRAINT FK_PLATO_COMPUESTO FOREIGN KEY (COD_PLATO)
REFERENCES PLATO (COD_PLATO) ON DELETE CASCADE,
CONSTRAINT FK_INGREDIENTE_COMPUESTO FOREIGN KEY (COD_INGREDIENTE)
REFERENCES INGREDIENTE (COD_INGREDIENTE) ON DELETE CASCADE
);
CREATE TABLE CLIENTE_BAR
(NIF_CLIENTE VARCHAR2(9),
NOMBRE_CLIENTE VARCHAR2(50),
CONSTRAINT PK_CLIENTE PRIMARY KEY (NIF_CLIENTE)
);
CREATE TABLE CONSUMICION
(NIF_CLIENTE VARCHAR2(9),
COD_PLATO NUMBER(3),
NUM_PERSONAS NUMBER(2),
FECHA_CONSUMICION DATE,
CONSTRAINT PK_CONSUMICION
PRIMARY KEY (NIF_CLIENTE, COD_PLATO, FECHA_CONSUMICION),
CONSTRAINT FK_CLIENTE_CONSUMICION FOREIGN KEY (NIF_CLIENTE)
REFERENCES CLIENTE_BAR (NIF_CLIENTE) ON DELETE CASCADE,
CONSTRAINT FK_PLATO_CONSUMICION FOREIGN KEY (COD_PLATO)
REFERENCES PLATO ON DELETE CASCADE
);
/*INSERTAR CLIENTES*/
INSERT INTO CLIENTE_BAR (NIF_CLIENTE, NOMBRE_CLIENTE) VALUES ('10', 'ANGUSTIAS JIMENEZ');
INSERT INTO CLIENTE_BAR (NIF_CLIENTE, NOMBRE_CLIENTE) VALUES ('20', 'CLARA MESA');
/* INSERTAR EN PLATO */
INSERT INTO PLATO (COD_PLATO, NOMBRE_PLATO) VALUES ('1', 'SOLOMILLO AL WHISKY CON PATATAS');
INSERT INTO PLATO (COD_PLATO, NOMBRE_PLATO) VALUES ('2', 'SALMOREJO');
INSERT INTO PLATO (COD_PLATO, NOMBRE_PLATO) VALUES ('3', 'FLAMENQUIN');
INSERT INTO PLATO (COD_PLATO, NOMBRE_PLATO) VALUES ('4', 'BISTEC DE TERNERA CON PATATAS');
INSERT INTO PLATO (COD_PLATO, NOMBRE_PLATO) VALUES ('5', 'KIWIS');
/*iNSERTAR EN CONSUMICION*/
INSERT INTO CONSUMICION (NIF_CLIENTE, COD_PLATO, NUM_PERSONAS, FECHA_CONSUMICION) VALUES ('10', '2', '4', TO_DATE('18/06/14', 'DD/MM/RR'));
INSERT INTO CONSUMICION (NIF_CLIENTE, COD_PLATO, NUM_PERSONAS, FECHA_CONSUMICION) VALUES ('10', '1', '4', TO_DATE('18/06/14', 'DD/MM/RR'));
INSERT INTO CONSUMICION (NIF_CLIENTE, COD_PLATO, NUM_PERSONAS, FECHA_CONSUMICION) VALUES ('10', '5', '4', TO_DATE('18/06/14', 'DD/MM/RR'));
INSERT INTO CONSUMICION (NIF_CLIENTE, COD_PLATO, NUM_PERSONAS, FECHA_CONSUMICION) VALUES ('20', '5', '4', TO_DATE('18/06/14', 'DD/MM/RR'));
/*INSERTAR EN INGREDIENTE */
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('1', 'SOLOMILLO DE TERNERA', '30');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('2', 'SOLOMILLO DE CERDO', '20');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('3', 'PATATAS', '3');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('4', 'JAMON SERRANO', '30');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('5', 'TOMATE', '2');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('6', 'KIWI', '6');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('7', 'PAN', '2');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('8', 'ACEITE', '4');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('9', 'ADEREZOS', '30');
INSERT INTO INGREDIENTE (COD_INGREDIENTE, NOMBRE_INGREDIENTE, PRECIO_KG) VALUES ('10', 'WHISKY', '20');
/*INSERTAR EN COMPUESTO */
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('1', '1', '300');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('1', '3', '300');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('1', '10', '100');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('2', '5', '300');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('2', '7', '200');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('2', '8', '100');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('2', '9', '50');
INSERT INTO COMPUESTO (COD_PLATO, COD_INGREDIENTE, PESO_GRS) VALUES ('5', '6', '200');
COMMIT;
Y esto son los datos que me pide:
1. Función a la que pasemos el nombre de un plato y nos devuelva el precio del mismo.
2. Haciendo uso de esta función actualiza el precio de los platos de la carta del Restaurante, que inicialmente están a 0 o NULL.
4. Procedimiento al que pasemos el nombre de un cliente y una fecha. Nos debe visualizar los datos de la consumición que ha realizado y el importe final teniendo en cuenta que debemos añadir el 21% de IVA.
5. Diseña un procedimiento para controlar los posibles errores que se puedan dar al insertar una nueva consumición. Se debe tener en cuenta que el nº de personas para una consumición no debe ser superior a 5 y que la fecha de consumición debe ser la de hoy.
Valora esta pregunta


0