ASO_GB06_Tarea

Páginas: 6 (1396 palabras) Publicado: 28 de octubre de 2015
Tarea para GBD06.
EJERCICIO 1
Crea un procedimiento que muestre los vehículos (marca, modelo y color) que no estén reparados y los datos de los clientes y vehículos que han entrado a reparar hoy. (En nuestro caso ninguno).
DELIMITER |
CREATE PROCEDURE proc1()
BEGIN
SELECT marca, modelo, color FROM vehiculos INNER JOIN reparaciones USING (matricula) WHERE reparado=0;
SELECT * FROMclientes INNER JOIN vehiculos USING (codcliente) INNER JOIN reparaciones USING (matricula) WHERE fechaentrada=CURDATE();
END |
DELIMITER ;
EJERCICIO 2
Realiza un procedimiento que reciba la matrícula de un vehículo y escriba las características del automóvil y el número de reparaciones que ha sufrido ese automóvil, los empleados que han realizado esas reparaciones y los datos de los vehículos de lamisma marca.
DELIMITER |
CREATE PROCEDURE proc2(IN x varchar(8))
BEGIN
DECLARE y varchar(30);
SELECT marca,modelo,color,count(reparado) as 'Num_reparaciones'
FROM vehiculos INNER JOIN reparaciones USING (matricula)
WHERE reparado=1 AND matricula=x;
SELECT empleados.* FROM reparaciones INNER JOIN intervienen USING (idreparacion) INNER JOIN empleados USING (codempleado)
WHERE matricula=xGROUP BY codempleado;
SELECT * FROM vehiculos where marca=(SELECT marca FROM vehiculos WHERE matricula=x);
END |
DELIMITER ;
Hacer una llamada al procedimiento creado.
CALL proc2('1313 DEF')
EJERCICIO 3
Modifica el procedimiento anterior añadiendo un HANDLER que controle que si esa matrícula no está en la base de datos, el resto de instrucciones no se ejecuten.
Añadimos el siguientehandler :
DECLARE EXIT HANDLER FOR SQLSTATE '02000' SELECT 'Sin datos';
EJERCICIO 4
Crea una función que actualice el estado de las reparaciones que estén finalizadas en una fecha que se indique y que devuelva cuantas reparaciones han finalizado en esa fecha.
DELIMITER |
DROP FUNCTION IF EXISTS fun1 |
CREATE FUNCTION fun1(f date)
RETURNS int
BEGIN
DECLARE x int;
UPDATE reparaciones SETreparado='1' WHERE fechasalida=f;
SELECT count(reparado) as finalizadas into x FROM reparaciones WHERE fechasalida=f and reparado=1;
return x;
END |
DELIMITER ;
LLAMADA SELECT fun1(‘2011-01-04’);
RESULTADO 3
EJERCICIO 5
Crea un procedimiento para dar de alta una nueva reparación para un vehículo y un cliente que no tenemos registrado. Llama al procedimiento ReparacionClienteNuevo.
Incluyeun HANDLER que controle que si insertamos un cliente y/o un vehículo que ya existen, el resto de sentencias continúen ejecutándose, y se añade como mínimo la nueva reparación.
Para probar el procedimiento toma como referencia los datos siguientes: (tomados de un ejercicio de la unidad anterior)
Un cliente nuevo nos ha traído su vehículo al taller el día 03/03/2011. En recepción se registran lossiguientes datos:
Del cliente.- Código: 00011, Nombre y apellidos: Tomás Gómez Calle, Teléfono: 22334455.
Del vehículo.- Matrícula: 3131 FGH, Modelo: Renault Scénic, matriculado el 17/03/2009, 105.000 km;
De la reparación.- Sustitución de las lámparas delanteras.
DELIMITER |
DROP PROCEDURE IF EXISTS ReparacionClienteNuevo|
CREATE PROCEDURE ReparacionClienteNuevo(codcli varchar(5),nombrevarchar(25),apellidos varchar(50),telefono varchar(9),matricula varchar(8),modelo varchar(50),marca varchar(25),fmatricula date,kms int(10),averia varchar(200))
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT 'Cliente o vehiculos duplicado';
INSERT INTO clientes VALUES (codcli,null,apellidos,nombre,NULL,telefono);
INSERT INTO vehiculos VALUES(matricula,marca,modelo,null,fmatricula,codcli,kms);
INSERT INTO reparaciones VALUES (null,matricula,curdate(),kms,averia,null,0,null);
END |
DELIMITER ;
llamada PROCEDIMIENTO
CALL ReparacionClienteNuevo('00011','Tomás','Gómez Calle','22334455','3131 FGH','Scénic','Renault','2009-03-17',105000,'Sustitución de las lámparas delanteras')
El resultado es que como existe tanto el cliente como el vehículo solo ejecutaría el alta en la...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS