Está en la página 1de 17

Contenido

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.

Partiendo de la base de datos TalleresFaber realiza los siguientes ejercicios:

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).

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

Crear un procedimiento para dar de alta un nuevo cliente,


introduciendo los datos como parametros de entrada. Probarlo
dando de alta un nuevo cliente.

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

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.

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

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.

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)

Un cliente nuevo nos ha traído su vehículo al taller el día 03/03/2011. En recepción se


registran los siguientes 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.
Procedimiento
DELIMITER $
CREATE PROCEDURE ReparacionClienteNuevo()
BEGIN

DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT 'Se ha producido un error';

INSERT INTO clientes (CodCliente, DNI, Apellidos, Nombre, Telefono)


VALUES ('00011','00000000A','Gómez Calle','Tomás','22334455');
INSERT INTO vehiculos (Matricula,Marca, Modelo,FechaMatriculacion,CodCliente)
VALUES ('3131 FGH','Renault','Scénic','2009-03-17','00011');
INSERT INTO reparaciones (Matricula,FechaEntrada,Km,Avería)
VALUES ('3131 FGH','2014-04-29','105.000','Sustitución de las lámparas delanteras.');

END$
Llamada

En la tabla clientes y vehículos no actualiza nada, ya que tenemos los datos.


Lo que si actualiza es una nueva reparación a día de hoy
EJERCICIO 5

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'.

SELECT Importe, unidades*PrecioReferencia as Recamb,


incluyen.IdReparacion,Importe+(unidades*PrecioReferencia) AS Total
FROM actuaciones, realizan, incluyen, recambios
WHERE realizan.Referencia=actuaciones.Referencia AND
incluyen.IdRecambio=recambios.IdRecambio
EJERCICIO 8
Crea una tabla denominada PedidoRecambios que contenga 3 columnas:
IdRecambio.
Descripcion.
Stock.
Con los mismos tipos de datos que tienen esas columnas en la tabla RECAMBIOS.

Crea un trigger asociado a la tabla RECAMBIOS que después de actualizar el Stock de un


recambio, si el número de unidades en Stock del recambio modificado es inferior a 4 unidades,
inserte una fila en la tabla PedidoRecambios con los datos resultantes.

También podría gustarte