Examen Parcial de Base de Datos
Transact SQL GRUPO A
Apellidos y Nombres: changanaqui ormeño pedro manuel
PROCEDIMIENTOS ALMACENADOS
1. CREAR LA TABLA CON UN PROCEDIMIENTO ALMACENADO, ENVIAR POR PARAMETRO
EL NOMBRE DE LA TABLA:
tb_IMPUESTO
Clave Campo Tipo de Dato Longitud
PK id_imp int autogenerado
desc_imp decimal 6,2
valo_imp decimal 6,2
USE BD_GAS2
GO
create proc sp_creartabla
@nombreT varchar(50)
as
declare @comando varchar(4000);
set @comando= 'CREATE TABLE '+@nombreT+ '( id_imp int PRIMARY KEY not null,des_imp
decimal(6,2) NOT NULL,valo_imp decimal(6,2) NOT NULL)';
EXEC (@comando);
EXEC sp_creartabla 'tb_IMPUESTO'
2. INSERTAR CUATRO REGISTROS EN LA TABLA IMPUESTO, INGRESAR POR
PARÁMETRO LOS CUATRO REGISTROS. (SOLO SE DEBE INGRESAR POR
PARAMETRO desc_imp y valo_imp)
create procedure sp_insertarregistro
@id_imp int ,
@desimp varchar(30),
@valoimp varchar(30)
as
insert into [dbo].[tb_IMPUESTO]
values(@id_imp,@desimp,@valoimp)
exec sp_insertarregistro '1','10','500.50'
exec sp_insertarregistro '2','20','600.50'
exec sp_insertarregistro '3','30','800.50'
exec sp_insertarregistro '4','50','1000.50'
select * from [dbo].[tb_IMPUESTO]
3. MODIFICAR EL VALOR DEL ÚLTIMO REGISTRO, INGRESAR POR PARÁMETRO
EL id_imp Y EL NUEVO VALOR DEL IMPUESTO.
create proc sp_modificarrefistro
@id_imp int ,
@valoimp varchar(30)
as
update[dbo].[tb_IMPUESTO]
set id_imp=@id_imp,
valo_imp=@valoimp
where id_imp=@id_imp
exec sp_modificarrefistro '4','800.50'
select * from [dbo].[tb_IMPUESTO]
4. ELIMINAR EL VALOR DEL PRIMER REGISTRO, INGRESAR POR PARÁMETRO El
id_imp
create proc sp_borrarregistro
@id_imp int
as
delete from [dbo].[tb_IMPUESTO]
where id_imp=@id_imp
exec sp_borrarregistro '1'
5. PROCEDIMIENTOS ALMACENADOS CON PARAMETROS
CUANTO FUE EL TOTAL DE VENTA GENERADA, EN UNA PROVINCIA
DETERMINADA, ENVIAR COMO PARÁMETRO EL AÑO.
Año | Total Venta | Provincia
------------------------------
| |
create proc sp_ventagenerada
@año datetime
as
select year(ve.fech_venta)as AÑO,count([Link])as TOTAL,DI.nomb_dis AS PROVINCIA
from [dbo].[tb_Distrito]DI inner join [dbo].[tb_Venta]VE on DI.id_dis=VE.id_dis
inner join [dbo].[tb_Detalle]DE on VE.id_ven=DE.id_venta
where year(ve.fech_venta) in (@año)
group by CANTIDAD
exec sp_ventagenerada '2008'
6. PROCEDIMIENTOS ALMACENADOS CON PARAMETROS, CUANTOS
PRODUCTOS SE VENDIERON POR AÑO, INGRESE EL NOMBRE DEL
PRODUCTO POR PARÁMETRO
Año | Producto | Año
-----------------------------------------------
| |
create proc sp_procven
@nombr varchar (15)
as
select year(ve.fech_venta)as AÑO,count([Link])as TOTAL,PRO.nomb_pro as PRODUCTO
from [dbo].[tb_Producto]PRO inner join [dbo].[tb_Detalle]DE on PRO.id_pro=DE.id_pro
inner join [dbo].[tb_Venta]VE on DE.id_venta=VE.id_ven
where pro.nomb_pro in (@nombr)
group by ve.fech_venta,pro.nomb_pro
exec sp_procven 'Llama Gas 10kls'
7. PROCEDIMIENTOS ALMACENADOS CON PARAMETROS, CUANTO SE RECAUDO
DE UTILIDAD POR LA VENTA DE PRODUCTOS POR AÑO,
INGRESAR POR PARAMETRO EL AÑO
Años | Utilidad
-----------------
|
create proc sp_utilidad
@año datetime
as
select year(ve.fech_venta) as año ,SUM(pro.prec_pro*[Link]-
pro.cost_pro*[Link]) as utilidad
from [dbo].[tb_Producto]PRO inner join [dbo].[tb_Detalle] DE on PRO.id_pro=DE.id_pro
inner join [dbo].[tb_Venta]VE on DE.id_venta=VE.id_venta
where ve.fech_venta in (@año)
group by ve.fech_venta
exec sp_utilidad '2008'
8. GENERE PROCEDIMIENTO ALMACENADO QUE MUESTRE LOS PRODUCTOS
VENDIDOS POR AÑO. INGRESE COMO PARÁMETRO EL AÑO QUE SE DESEA
LISTAR.
Año | Producto
-------------------------
|
create proc sp_ventaporaño
@año datetime
as
select year(ve.fech_venta) as año ,pro.nomb_pro as PRODUCTO_VENDIDO
from [dbo].[tb_Producto]PRO inner join [dbo].[tb_Detalle]DE on PRO.id_pro=DE.id_pro
inner join [dbo].[tb_Venta]VE on DE.id_venta=VE.id_ven
where ve.fech_venta in (@año)
group by ve.fech_venta,pro.nomb_pro
exec sp_ventaporaño'2008'
9. GENERE UN PROCEDIMIENTO ALMACENADO QUE PERMITA ACTUALIZAR EL
STOCK DE UN PRODUCTO, INGRESAR POR PARAMETRO EL NOMBRE DEL
PRODUCTO Y EL NUEVO VALOR DEL STOCK.
create proc sp_actualizarstock
@nompro Nvarchar(15),
@stock int
as
update [dbo].[tb_Producto]
set nomb_pro=@nompro,
stoc_pro=@stock
where nomb_pro=@nompro
exec sp_actualizarstock 'Llama Gas 10kls',100
10. GENERE UN PROCEDIMIENTO ALMACENADO QUE VIZUALIZE LAS
CANTIDADES DE VENTAS QUE SE OBTUVO POR VENDEDOR, INGRESE POR
PARÁMETRO EL AÑO.
create proc sp_ventaporvendedor
@año datetime
as
select year(ve.fech_venta) as año ,VEN.apno_ven as VENDEDOR
from [dbo].[tb_Detalle]DE inner join [dbo].[tb_Venta]VE on DE.id_venta=VE.id_ven
inner join [dbo].[tb_Vendedor]VEN on VE.id_ven=VEN.id_ven
where ve.fech_venta in (@año)
group by ve.fech_venta,VEN.apno_ven
exec sp_ventaporvendedor '2008'