You are on page 1of 3

Taller de procedimientos almacenados 2

Con la base de datos Terminal construya los siguientes procedimientos.

1. Crear un procedimiento al que dada la placa de un bus, muestre su


capacidad y el valor promedio de los pasajes para los viajes realizados
durante los últimos dos meses.

2. Crear un procedimiento que nos permita conocer la placa del bus, código de
la flota, y número de pasajeros transportados en general es decir, en todos
los viajes que haya realizado. Únicamente para buses cuya capacidad sea
mayor a un número determinado de pasajeros.

3. Construir un procedimiento que reciba un numero que corresponde a un


trimestre del año y muestre un listado con código y nombre de los
conductores cuya fecha de cumpleaños corresponda a ese trimestre.

4. Construir un procedimiento que permita incrementar el valor del pasaje en


un porcentaje determinado para una ruta de la cual se recibe su nombre.

SOLUCION

Crear un procedimiento al que dada la placa de un bus, muestre su


capacidad y el valor promedio de los pasajes para los viajes realizados
durante los últimos dos meses.

Alter procedure punto1(@Placa varchar(10),@mesInicial int , @mesFinal int)


--@Placa varchar(10)
--set @Placa='VDR005'
as
select vi_placa, AVG(vi_valopasaj)as promedio,bu_capacidad
from Viajes V inner join Buses B on B.bu_placa=V.vi_placa
where vi_placa=@Placa and Month(vi_fechviaje) >= @mesInicial and
Month(vi_fechviaje)<=@mesFinal
group by vi_placa,bu_capacidad
go
exec punto1 @placa = 'VDR005',@mesInicial=2, @mesFinal = 3;
go
2. Crear un procedimiento que nos permita conocer la placa del bus,
código de la flota, y número de pasajeros transportados en general es
decir, en todos los viajes que haya realizado. Únicamente para buses
cuya capacidad sea mayor a un número determinado de pasajeros.

Create procedure Punto2(@capacidad int)


as
--declare
--@capacidad int
--set @capacidad=20
Select vi_placa,bu_codiflot, SUM(vi_numepasajero)as transportados
From Buses B inner join Viajes V on V.vi_placa=B.bu_placa
Where bu_capacidad>@capacidad
Group by vi_placa,bu_codiflot
go
exec Punto2 @capacidad = 10;
go

3. Construir un procedimiento que reciba un numero que corresponde


a un
trimestre del año y muestre un listado con código y nombre de los
conductores
cuya fecha de cumpleaños corresponda a ese trimestre.

create procedure Punto3 (@trimestre int)


/*declare
@trimestre int
set @trimestre=4*/
as
if (@trimestre=1)begin
select co_codiconduc,co_nombconduc,co_fechnaci
from Conductores
where month(co_fechnaci)>0 and month(co_fechnaci)<4
order by co_fechnaci
end
else if (@trimestre=2)begin
select co_codiconduc,co_nombconduc,co_fechnaci
from Conductores
where month(co_fechnaci)>3 and month(co_fechnaci)<7
order by co_fechnaci
end
else if (@trimestre=3)begin
select co_codiconduc,co_nombconduc,co_fechnaci
from Conductores
where month(co_fechnaci)>6 and month(co_fechnaci)<10
order by co_fechnaci
end
else
select co_codiconduc,co_nombconduc,co_fechnaci
from Conductores
where month(co_fechnaci)>9 and month(co_fechnaci)<13
order by co_fechnaci
go
exec Punto3 @trimestre = 3;

4.Construir un procedimiento que permita incrementar el valor del


pasaje en
un porcentaje determinado para una ruta de la cual se recibe su
nombre.

alter procedure Punto4 (@Nomruta varchar(25),@porcentaje int)


as
declare
@CodiRuta int
Set @CodiRuta = (select ru_codiruta from Rutas where
ru_nombruta=@Nomruta)
Update Viajes
Set vi_valopasaj=vi_valopasaj+(vi_valopasaj*@porcentaje/100)
Where vi_codiruta=@CodiRuta
Go

exec Punto4 @Nomruta='BOGOTA ACACIAS',@porcentaje=10


Go

You might also like