Sie sind auf Seite 1von 6

CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA

INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
PROCEDIMIENTOS ALMACENADOS 1
Redacte las sentencias SQL para crear los procedimientos almacenados para los
siguientes planteamientos:
Usando la base de datos Terminal
Procedimiento almacenado (Store Procedure o SP) para consultar los datos del
ltimo viaje registrado. use Terminal
go
Create procedure ConsultarViaje crea el SP! con un nom"re
#s inicia la instrucci$n
select top % & creamos la sentencia s'l de normal
(rom viajes
order ") vi*(ec+viaje desc
%. go (inali,a la
Crelo as:
instrucci$n! en este caso la creacion del SP
Prbelo as:
e-ec ConsultarViaje
.. La empresa 'uiere premiar al conductor 'ue mas cantidad de viajes +a +ec+o!
para lo cual! re'uiere ver el nom"re del conductor ) la direcci$n del mismo para
poder enviar el premio a su lugar de residencia.
use Terminal
go
Create procedure ConduViaje
As
select top 1 co_NombConduc,co_DireConduc,COUNT(vi_CodiConduc
!rom Conductor "NN#$ %O"N Viaje ON (vi_CodiConduc&co_CodiConduc
group b' co_NombConduc,co_DireConduc
go
e(ecute ConduViaje
go
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA
INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
/. La empresa va a sacar de circulacion los "uses 'ue +a)an sido (a"ricados
antes de %001 siempre ) cuando la cantidad de viajes reali,ados supere los 23!
para con(irmar la in(ormacion desean ver la placa! la (ec+a de (a"ricacion del
"us ) la cantidad de viajes 'ue +a +ec+o.
use Terminal
go
Create procedure )uses*ec+a
As
select bu_,laca,bu_*ec+*abri,COUNT(vi_"d
!rom )us "NN#$ %O"N Viaje ON (vi_"d&bu_"d
group b' bu_,laca,bu_*ec+*abri
-aving COUNT(vi_"d./0 AND 'ear (bu_*ec+*abri1 213342
go
e(ecute )uses*ec+a
go
4. La siguiente sentencia nos permite crear un procedimiento al 'ue dada la placa
de un "us! muestra su capacidad ) el valor promedio de los pasajes para los
viajes reali,ados en una (ec+a.
Create procedure placa
@placa nchar(6),
@fecha datetime
/* Despues del nombre del procedimiento, se declaran las variables
que ste va a recibir al momento de su utilizacion o eecucion, el
nombre de la variable va se!uido del tipo de dato " su lon!itud, si
la requiere# adem$s van separadas por coma, recuerden que las
variables en %&', se nombran antecedidas por @( */
)s
select bu*placa, bu*capacidad,)+,(vi*valopasa) as -romedio-asaes
from dbo(.uses b inner oin +iaes v on b(bu*placa / v(vi*placa
0here b(bu*placa / @placa and v(vi*fechviae/@fecha
!roup b" bu*placa, bu*capacidad
!o
/* 1n terminos !enerales, las variables que el procedimiento
recibe, se utilizan para condicionar la sentencia del mismo# por
consi!uiente, es normal encontrarlas en la cl$usula 0here, cuando
se trata de consultas de seleccion*/
e2ec placa3+D)4553,364467467483
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA
INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
1. Crear un procedimiento 'ue nos permita conocer la placa del "us! c$digo de la
(lota! ) nmero de pasajeros transportados en general es decir! en todos los viajes
'ue +a)a reali,ado. 5nicamente para "uses cu)a capacidad sea ma)or a un
nmero determinado de pasajeros.
alter procedure ,asajeros
5capacidad int
As
select bu_placa,!l_Codi*lot,sum(vi_Nume,asajero as Cantidad,asajeros
!rom ()us inner join Viaje on bu_"d & vi_"d inner join *lota
on(bu_Codi*lot&!l_Codi*lot
group b' bu_placa, !l_Codi*lot, bu_Capacidad
-aving 5capacidad. bu_Capacidad
go
e(ecute ,asajeros 4
go
2. Construir un procedimiento 'ue reci"a un nmero 'ue corresponde a un trimestre
del a6o ) muestre un listado con c$digo ) nom"re de los conductores cu)a (ec+a
de cumplea6os corresponda a ese trimestre.
create procedure Cumplea6os
5!ec+a int
As
select co_CodiConduc,co_NombConduc
!rom Conductor
7+ere mont+(co_!ec+Naci&5!ec+a
go
e(ecute Cumplea6os 4
go
7. 8aciendo uso de su capacidad de an9lisis! constru)a un procedimiento 'ue
permita incrementar el valor del pasaje en un porcentaje determinado por el
usuario! para una ruta en particular! de la cual se de"e reci"ir el nom"re.
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA
INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
alter procedure "ncre,asaje
5incre int,
5ruta nvarc+ar(84
As
Update Viaje
9et vi_Valo,asaj&(((vi_Valo,asaj:5incre;100<vi_Valo,asaj
!rom $uta
7+ere ru_Nomb$uta&5ruta
go
e(ecute "ncre,asaje 10,212
:. Constru)a un procedimiento 'ue permita insertar datos en la ta"la Terminal.
create procedure insertaTerminal
5codigo nc+ar(/,
5direccion nvarc+ar(80,
5nombre nvarc+ar(84
As
insert into Terminal (te_CodiTerm,te_DireTerm,te_NombTerm
Values(5codigo,5direccion,5nombre
go
e(ecute insertaTerminal 21=2,2Calle siempre viva 1=82,2Terminal Central2
go
Usando la base de datos Ne!tno
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA
INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
0. ;l gerente de recursos +umanos de"e tener disponi"le la in(ormaci$n de cu9les de
sus empleados )a est9n pensionados! esto 'uiere decir 'ue )a cumplieron 23
a6os! en el procedimiento almacenado! utilice la siguiente sinta-is SQL para +allar
la edad.
<#T;<=>>(?;#R!@omColumnaTipo>ec+a!A;T<#T;())
La (unci$n <#T;<=>> permite o"tener el valor 'ue resulta de e-traer una de las
partes 'ue compone un dato de tipo (ec+a. Se contina la sinta-is agregando!
entre parBntesis ) separando con coma! la parte 'ue se desea o"tener (a6o! mes $
dCa)! se agrega a+ora el nom"re de la columna con (ec+a m9s antigua ) por
ltimo! el nom"re del campo tipo (ec+a m9s recienteD es importante se6alar 'ue la
(unci$n A;T<#T;() permite o"tener la (ec+a actual! (ec+a del sistema! en la cual
se ejecute la sentenciaD por lo tanto! es conveniente usarla para o"tener datos
re(erentes a aniversarios como edad! tiempo de servicio! a6os! meses o dCas
transcurridos entre dos (ec+as.
;la"ore un procedimiento 'ue le permita al gerente visuali,ar el nom"re completo
del empleado ) el tiempo de pensionado 'ue lleva cada uno.
alter procedure ,ensionado
As
9elect Nombre,Apellidos,DAT#D"**(>#A$,*ec+aNacimiento,?#TDAT#(@/0 as
ATiempo de pensionadoB
*rom #mpleados
7+ere DAT#D"**(>#A$,*ec+aNacimiento,?#TDAT#(.&/0
go
e(ecute ,ensionado
go
%3. ;l 9rea de recursos +umanos de"e pasar el reporte anual de cu9les de sus
empleados est9n pr$-imos a pensionarse! este reporte muestra el nom"re
completo del empleado! los a6os de servicio 'ue lleva ) el nmero de a6os 'ue
(alta para pensionarse! ;l procedimiento de"e mostrar! nicamente! a'uellos 'ue
tengan entre 11 ) 10 a6os de edad ) al menos %7 a6os de servicio.
alter procedure ,ensionado
As
9elect Nombre,Apellidos,DAT#D"**(>#A$,*ec+aContrataciCn,?#TDAT#( as
AA6os de servicioB,/0@DAT#D"**(>#A$,*ec+aNacimiento,?#TDAT#( as AA6os
para pensionarseB
*rom #mpleados
7+ere DAT#D"**(>#A$,*ec+aNacimiento,?#TDAT#( )etDeen 44 and 43 AND
DAT#D"**(>#A$,*ec+aContrataciCn,?#TDAT#(.&1E
go
e(ecute ,ensionado
go
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca
CENTRO DE GESTION DE MERCADOS LOGISTICA Y TECNOLOGIAS DE LA
INFORMACION
ANALISIS Y DESARROLLO DE SISTEMAS DE INFORMACION
Fecha:
agosto
/2013
%%. ;la"ore un procedimiento almacenado 'ue le permita al 9rea de compras! generar
un reporte diario con los datos de los productos 'ue de"en pedirD para ello 'uieren
visuali,ar el nom"re del producto! precio unitario! el precio promedio en ventas ) la
di(erencia entre el precio unitario ) el precio promedio en ventas! todo esto siempre
) cuando el producto no se encuentre descontinuado (suspendido no de"e ser
igual a %).
#dem9s! tenga en cuenta 'ue las unidades en e-istencia de"en ser ma)ores al
valor del nivel de nuevo pedido o 'ue el nivel nuevo pedido puede ser cero pero
las unidades en e-istencia son menor o igual al ..
alter procedure $eporte
As
9elect
Nombre,roducto,proF,recioUnidad,AV?(detaFCantidad:detaF,recioUnidad as
A,recio ,romedioB,(AV?(detaFCantidad:detaF,recioUnidad@ proF,recioUnidad
as Di!erencia
*rom ,roductos pro inner join ADetalles de pedidosB deta on
proF"d,roducto&detaF"d,roducto
7+ere 9uspendido G&0 AND Unidades#n#(istencia.NivelNuevo,edido
group b' Nombre,roducto,proF,recioUnidad
go
e(ecute $eporte
go
Elao!a"o #o!: I$st!%cto!a Sa$"!a Ya$$eth R%e"a G%e&a!a
SENA ' (!ea "e Tele)$*o!+,t)ca

Das könnte Ihnen auch gefallen