MySQL - PROCEDIMIENTOS Y CURSORES

   
Vista:
Imágen de perfil de SQL

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROCEDIMIENTOS Y CURSORES

Publicado por leonardo_josue (81 intervenciones) el 19/05/2015 16:10:27
Vaya, sólo te faltó decirnos para cuando necesitas entregar este trabajo, no vaya a ser que por nuestra culpa te puedan reprobar o peor aun, te despidan de tu trabajo...

Mucho ojo SQL (ni siquiera tienes el valor para decir tu nombre), esto no es el Rincón del Vago, esto es un foro de consultas donde tratamos de resolver Dudas puntuales, pero no hacemos el trabajo de otros.

Si quieres ayuda, perfecto, este es el sitio indicado, pero comienza por decirnos qué problemas tienes, qué es lo que intentaste hacer (porque supongo que intentaste hacer algo), postea tu código, no importa que esté con error y haz las preguntas necesarias, pero no nos pidas que hagamos algo que tú debes hacer.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar