- Crear un procedimiento que permita mostrar todas las reservas de
un determinado ao*/ create procedure reserva_por_anio @anio int as begin select * from reserva where year(FECHA)=@anio end
execute reserva_por_anio 2011
/*2.- Crear un procedimiento que muestre un mensaje adicional pertenece a Hotmail en los registros que tienen como servidor de correo a Hotmail, en caso contrario mostrar el mensaje Otros.*/ create procedure servidor_pasajeros as begin select *, case when email like '%hotmail%' then 'Pertenece a hotmail' when email like '%gmail%' then 'Otros' end as "Tipo servidor" from pasajero end
execute servidor_pasajeros
/*3.- Desarrolle un procedimiento que cuando el mes de reserva sea marzo, julio o diciembre se muestre un bono de 100 soles, caso contrario un bono de 10 soles (debe adicionar una columna a la consulta)*/ create procedure reservas_pasajeros as begin select *, case when month(fecha) like 03 then '100' when MONTH(fecha) like 07 then '100' when MONTH(fecha) like 12 then '100' when MONTH(fecha) like 01 then '10' when MONTH(fecha) like 02 then '10' when MONTH(fecha) like 04 then '10' when MONTH(fecha) like 05 then '10' when MONTH(fecha) like 06 then '10' when MONTH(fecha) like 08 then '10' when MONTH(fecha) like 09 then '10' when MONTH(fecha) like 10 then '10' when MONTH(fecha) like 11 then '10' end as "Bono" from RESERVA end
execute reservas_pasajeros
/*4- Desarrolle un procedimiento que muestre el nmero de pasajeros por pas y un mensaje que diga visitar solo en aquellos pases que tengan 2 o ms pasajeros*/ create procedure pasajeros_por_pais as begin select PAI.pais, COUNT(pas.idpasajero) as "Total Pasajeros", case when COUNT(pas.idpasajero)=1 or COUNT(pas.idpasajero)=0 then '' else 'Visitar solo aquellos paises que tengan 2 o mas pasajeros' end as mensaje from PAIS pai left join pasajero pas on pas.idpais=pai.idpais group by pai.pais end
execute pasajeros_por_pais
/*5.- Desarrolle un procedimiento que baje el costo de las reservas en 100 soles*/ create procedure reduccion_de_costo as begin update reserva set costo = costo - 100 end
execute reduccion_de_costo
/*6 Desarrolle un procedimiento que presente el total de pagos de los pasajeros de un determinado pas.*/ create procedure pago_por_pasajero_pais as begin select pai.pais as[pais], SUM(monto) as [monto acumulado] from PASAJERO pas join PAIS pai on pas.IDPAIS=pai.IDPAIS join PAGO pag on pas.IDPASAJERO =pag.IDPASAJERO group by pai.PAIS end
execute pago_por_pasajero_pais
/*7.- Desarrolle un procedimiento que muestre los 5 costos ms bajos registrados en la tabla reserva.*/ create procedure costos_masbajos_reserva @precio int as begin set rowcount @precio select * from RESERVA order by RESERVA.COSTO asc end
execute costos_masbajos_reserva 5
/*8.- Desarrolle un procedimiento que muestre el monto acumulado por aos desde la tabla pago.*/ create procedure pago_por_ao as begin select YEAR(fecha) as "Ao", SUM(monto) as "Cantidad Pagada"from PAGO group by year(fecha) end
execute pago_por_ao
/*9.- Implemente un procedimiento que permita registrar a un nuevo pasajero. Para este caso debe definir como parmetros todos los datos necesarios para registrar un nuevo pasajero pero debe ingresar el nombre del pas de manera que si este pas no existe debe aparecer un mensaje PAIS NO EXISTE. Finalmente si el registro tuvo xito se muestra un mensaje Proceso ejecutado correctamente*/
create procedure registrar_pasajero @codpasajero char(5), @nombre varchar(50), @pais varchar(30), @telefono char(15), @email varchar(50) as declare @codpais char(4)=(select idpais from PAIS where PAIS =@pais) declare @mensaje varchar(60) if exists(select idpais from PAIS where PAIS= @pais) begin insert into pasajero(idpasajero,nombres,idpais,telefono,email)values (@codpasajero,@nombre,@codpais,@telefono,@email) set @mensaje ='Proceso ejecutado Correctamente' print @mensaje end else begin set @mensaje='Pais no existe' print @mensaje end
execute registrar_pasajero 'P0014','Marta Castillo Jimenes','brasil','15263538','MART@HOTMAIL.COM' select * from PASAJERO
/*10.- Crear un procedimiento almacenado que muestre el total de reservas de un determinado pas ingresando el nombre del pas. Si el pas no existe mostrar un mensaje PAIS NO REGISTRADO EN LA BASE DE DATOS*/
create procedure total_reservas @pais varchar(30) as declare @mensaje varchar(40) if exists(select idpais from pais where pais = @pais) begin select count(*) as 'cantidad de reservas' from pago where idpasajero in (select idpasajero from pasajero p inner join pais pa on p.idpais = pa.idpais where pa.pais = @pais ) end else begin set @mensaje = 'pais no registrado en la base de datos' print @mensaje end