Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EJERCICIO 1..................................................................................................................................3
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)...............................................................................................................................3
GESTION DE BASES DE DATOS
EJERCICIO2...................................................................................................................................6
Crear un procedimiento para dar de alta un nuevo cliente, introduciendo los datos como
parametros de entrada. Probarlo dando de alta un nuevo cliente..............................................6
EJERCICIO3...................................................................................................................................9
Tarea para GBD06
Crear un procedimiento para dar de baja un cliente, utilizando un handler, por si el registro no
existe. En este caso aparecera el mensaje, no se da de baja, no existe. En caso contrario se
dará de baja. El parámetro de entrada al procedimiento sera la clave del cliente a dar de baja.
Probarlo para dos casos: 1-Un cliente inexistente, 2-El cliente dado de baja anteriormente......9
EJERCICIO 4................................................................................................................................11
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........................11
EJERCICIO 5................................................................................................................................14
Creación de funciones:...............................................................................................................14
EJERCICIO 8................................................................................................................................17
Para realizar los ejercicios vamos a tomar como referencia la base de datos TalleresFaber cuyo
esquema relacional ya conocemos:
Para realizar los ejercicios necesitas tener creada y con datos la base de datos anterior. El
script de creación de la base de datos, así como el que contiene los datos, los descargaste del
apartado RECURSOS en unidades anteriores.
EJERCICIO 1
Procedimiento que muestra Marca, modelo y color de los coches que no están reparados
DELIMITER $
CREATE PROCEDURE Mostrar()
BEGIN
Select Matricula, Marca, Modelo
FROM vehiculos
WHERE vehiculos.Matricula NOT IN (
SELECT Matricula
FROM reparaciones);
END$
Llamada
call Mostrar();
Muestra los datos de clientes y coches que han entrado hoy a reparar
DELIMITER $
CREATE PROCEDURE Reparadoshoy()
BEGIN
SELECT *
FROM (reparaciones INNER JOIN vehiculos ON reparaciones.Matricula = vehiculos.Matricula)
INNER JOIN clientes ON clientes.CodCliente = vehiculos.CodCliente
WHERE reparaciones.FechaEntrada=29/04/14;
END$
Llamada
call Reparadoshoy();
EJERCICIO2
DELIMITER $
CREATE PROCEDURE actualizar(in id varchar(5), in dnie varchar(10), in ape varchar(50), in nom
varchar(25), in dir varchar(50), in tel varchar(9))
BEGIN
INSERT INTO clientes(CodCliente, DNI, Apellidos, Nombre, Direccion, Telefono)
VALUES(id, dnie, ape, nom, dir, tel);
END$
Creación procedimiento
Llamada
call actualizar ('00012','65456098R', 'Nuevo', 'Pedro', 'Calle Torrenueva', '555678345');
Resultado
EJERCICIO3
DELIMITER $
CREATE PROCEDURE BorraCliente (IN CodCli varchar(5))
BEGIN
DECLARE m VARCHAR(5);
DECLARE EXIT HANDLER FOR SQLSTATE '02000' SELECT 'El cliente no existe';
SELECT CodCliente into m FROM clientes WHERE CodCliente=CodCli;
BEGIN
DELETE FROM clientes WHERE CodCliente=CodCli;
END ;
END $
Intentar borrar un cliente que no existe
Llamada
call BorraCliente ('00013');
Llamada
call BorraCliente ('00012');
EJERCICIO 4
Incluye un 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)
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.
Procedimiento
DELIMITER $
CREATE PROCEDURE ReparacionClienteNuevo()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT 'Se ha producido un error';
END$
Llamada
Creación de funciones:
Diseña una función que calcule el importe de los recambios sustituidos en una reparación.
DELIMITER $
CREATE FUNCTION PrecioFinal(IdReparacion INT) RETURNS INT
BEGIN
DECLARE aux int;
SET aux= (SELECT unidades*PrecioReferencia
FROM incluyen, recambios
WHERE incluyen.IdRecambio=recambios.IdRecambio);
RETURN aux;
END $
Llamada
SELECT PrecioFinal(7);
Diseñar una consulta que calcule el importe total (mano de obra y recambios) de las
reparaciones que se le hayan realizado al vehículo de matrícula '1313 DEF'.