You are on page 1of 6

Ejercicios resueltos

1) Eliminamos el procedimiento almacenado "pa_promedio", si


existe
Drop procedure pa_promedio

2) Creamos un procedimiento almacenado al cual le enviamos 2


nmeros decimales y retorna el promedio:
create procedure promedio
@n1 decimal(4,2), --parametro de entrada
@n2 decimal(4,2), --parametro de entrada
@resultado decimal(4,2) output --parametro de salida
as
select @resultado=(@n1+@n2)/2;--formula para obtener el promedio
--EJECUCION
declare @variable decimal(4,2)--declaracion de variable de salida
execute promedio 5,6, @variable output --ejecucion
select @variable; --mostrar el resultado

CREAR LA TABLA LIBROS DE LA BASE DE DATOS LIBRERA


codigo int (PK)
titulo varchar(40)
autor varchar(30)
editorial varchar(20)
precio decimal(5,2)

3) Ingresamos lo siguientes datos mediante procedimiento


almacenado
insert into libros values ('Uno','Richard Bach','Planeta',15);
insert into libros values ('Ilusiones','Richard Bach','Planeta',12);
insert into libros values ('El aleph','Borges','Emece',25);
insert into libros values ('Aprenda PHP','Mario Molina','Nuevo siglo',50);
insert into libros values ('Matematica estas ahi','Paenza','Nuevo siglo',18);
insert into libros values ('Puente al infinito','Richard Bach','Sudamericana',14);

insert into libros values ('Antologa','J. L. Borges','Paidos',24);


insert into libros values ('Java en 10 minutos','Mario Molina','Siglo XXI',45);
insert into libros values ('Antologa','Borges','Planeta',34);
Create procedure insertar_libro
@tit varchar(15), @aut varchar(15), @edi varchar(20), @pre decimal(5,2)
as
Insert into LIBRO
(TITULO, AUTOR, EDITORIAL, PRECIO)
values
(@tit, @aut, @edi, @pre)
--EJECUCION
Execute insertar_libro 'Uno','Richard Bach','Planeta',15;
Execute insertar_libro 'Ilusiones','Richard Bach','Planeta',12;
Execute insertar_libro'El aleph','Borges','Emece',25;
Execute insertar_libro 'Aprenda PHP','Mario Molina','Nuevo siglo',50;
Execute insertar_libro 'Matematica estas ahi','Paenza','Nuevo siglo',18;
Execute insertar_libro 'Puente al infinito','Richard
Bach','Sudamericana',14;
Execute insertar_libro 'Antologa','J. L. Borges','Paidos',2);
Execute insertar_libro 'Java en 10 minutos','Mario Molina','Siglo
XXI',45;
Execute insertar_libro 'Antologa','Borges','Planeta',34;

4) Creamos un procedimiento almacenado que muestre los ttulos,


editorial y precio de los libros de un determinado autor (enviado
como parmetro de entrada) y nos retorne la suma y el
promedio de los precios de todos los libros del autor enviado:
create procedure pa_autor_sumaypromedio3
@autor varchar(30),
@suma decimal(6,2) output,
@promedio decimal(6,2) output
as
select titulo,editorial,precio
from LIBRO
where autor=@autor
select @suma=sum(precio)
from LIBRO
where autor=@autor
select @promedio=avg(precio)
from LIBRO
where autor=@autor;
declare @s decimal(6,2), @p decimal(6,2)
execute pa_autor_sumaypromedio3 'Richard Bach', @s output, @p output
select @s as total_emple, @p as promedio_emple;

5) Crear la base de datos empleado e insertar datos mediante


procedimientos almacenados

DNI char(8) (PK)


nombre varchar(20)
apellido varchar(20)
sueldo decimal(6,2)
cantidadhijos tinyint
seccion varchar(20)
insert into empleados values('22222222','Juan','Perez',300,2,'Contaduria');
insert into empleados values('22333333','Luis','Lopez',300,0,'Contaduria');
insert into empleados values ('22444444','Marta','Perez',500,1,'Sistemas');
insert into empleados values('22555555','Susana','Garcia',400,2,'Secretaria');
insert into empleados values('22666666','Jose
Maria','Morales',400,3,'Secretaria');
6) Elimine el procedimiento llamado "pa_empleados_sueldo" si
existe
Drop procedure pa_empleados_sueldo
7) Cree un procedimiento almacenado llamado
"pa_empleados_hijos" que seleccione los nombres, apellidos y
cantidad de hijos de los empleados con hijos.
create procedure pa_empleados_hijos
as
select nombre,apellido,cantidadhijos
from empleado
where cantidadhijos>0;
exec pa_empleados_hijos;

8) Cree un procedimiento almacenado llamado


"pa_empleados_sueldo" que seleccione los nombres, apellidos y
sueldos de los empleados que tengan un sueldo superior o igual
al enviado como parmetro.
create procedure pa_empleados_sueldo
@sueldo decimal(6,2)
as
select nombre,apellido,sueldo
from EMPLEADO

where sueldo>=@sueldo;
exec pa_empleados_sueldo 400;

9) Ejecute el procedimiento creado anteriormente con distintos


valores:
exec pa_empleados_sueldo 400;
exec pa_empleados_sueldo 500;
10)
Cree un procedimiento llamado "pa_sueldototal" que reciba
el DNI de un empleado y muestre su nombre, apellido y el sueldo
total (resultado de la suma del sueldo y salario por hijo, que es
de $200 si el sueldo es menor a $500 y $100, si el sueldo es
mayor o igual a $500).
create procedure pa_sueltototal
@dni CHAR(8),
@sueldo_total int output
AS
select NOMBRE,APELLIDO from EMPLEADO where DNI=@dni
if(select SUELDO from EMPLEADO where DNI =@dni) < 500
SELECT @sueldo_total = (SUELDO + (CANTIDADHIJOS *200))
FROM EMPLEADO where DNI=@dni
else
SELECT @sueldo_total = (SUELDO + (CANTIDADHIJOS *100))
FROM EMPLEADO where DNI=@dni

declare @sueldo_to int


execute pa_sueltototal '22222222', @sueldo_to output
select @sueldo_to SUELDO_TOTAL

11)
crear un procedimiento almacenado llamado "
bono_empleado" que reciba la seccion de un empleado,y
muestre el total de sueldo aadido con un bono de 500 a los que
se encuentre en la seccion de contadura
create procedure bono_empleado
@seccion nvarchar(50),
@sueldo_total int output
AS
select nombre,apellido,seccion,sueldo from empleados where
seccion=@seccion
SELECT @sueldo_total = (sueldo + 500)
FROM empleados where seccion=@seccion
drop proc bono_empleado

declare @sueldo_bono int


execute bono_empleado 'contaduria', @sueldo_bono output
select @sueldo_bono SUELDO_BONO

12)
crear el procedimiento almacenado llamado "precio_igv"
que reciba el codigo del libro y que muestre el ---precio del libro
aadido con el igv (18%)
create procedure precio_igv
@codigo int,
@pre_igv decimal output
as
select codigo,precio from libros where codigo=@codigo
SELECT @pre_igv = (precio * 0.18)
FROM libros where codigo=@codigo
drop proc precio_igv
declare @igv decimal
execute precio_igv 1, @igv output
select @igv IGV_LIBRO

13)
crear el prodemiento almacenado llamado
"precio_descuento" que reciba el codigo del libro y que muestre
los libros que tengan el precio mayor a 40.00 con un descuento
del 10%

create procedure precio_descuento


@codigo int,
@pre_des decimal output
as
select codigo,precio from libros where codigo=@codigo
if(select precio from libros where codigo=@codigo)>40.00
SELECT @pre_des = (precio * 0.1)
FROM libros where codigo=@codigo
drop proc precio_igv
declare @des decimal
execute precio_descuento 4, @des output
select @des DESCUENTO_LIBRO

14)
crear el procedimiento almacenado llamado "regalo" que
reciba el DNI del empleado y que muestre el nombre, apellido,
presupuesto de regalos por empleado( por cada hijo se le
brindara 100 soles) y ademas el presupuesto total necesario
para cubrir todos los regalos
create procedure precio_descuento
@codigo int,
@pre_des decimal output
as
select codigo,precio from libros where codigo=@codigo
if(select precio from libros where codigo=@codigo)>40.00
SELECT @pre_des = (precio * 0.1)
FROM libros where codigo=@codigo
drop proc precio_igv
declare @des decimal

execute precio_descuento 4, @des output


select @des DESCUENTO_LIBRO

--crear el procedimiento almacenado llamado "regalo" que reciba el


--DNI del empleado y que muestre el nombre, apellido, presupuesto
--de regalos por empleado( por cada hijo se le brindara 100 soles)
--y ademas el presupuesto total necesario para cubrir todos los regalos
create procedure regalo
@dni varchar(8),
@presu_emp int output,
@tot_emp int output
AS
select nombre,apellido,cantidahijos from empleados where dni=@dni
select @presu_emp = (cantidahijos * 100)
FROM empleados where dni=@dni
create procedure tot_presupuesto
@dni varchar(8),
@tot_emp int output,
@tot_pre int output
AS
select @tot_emp=sum(cantidahijos)from empleados
select nombre,apellido,cantidahijos from empleados where dni=@dni
select @tot_pre =(@tot_emp*100)
FROM empleados where dni=@dni
drop proc REGALO
drop proc tot_presupuesto
declare @pre_regalo int
execute regalo '22222222', @pre_regalo output
select @pre_regalo PRE_EMPLEADO
declare @pre_tot int
execute tot_presupuesto '22222222',@pre_tot output
select @pre_tot PRE_TOTAL

You might also like