Está en la página 1de 3

Echeverre Chávez Luis

Procedimientos Almacenados
*Crear un pa que muestre el monto total de ventas de una categoría de productos,
cuyo nombre es enviado completo o parcialmente como parámetro. En el caso de que
no se envíe el parámetro deberá mostrarse el resultado para todas las categorías
Ejemplo de ejecución: EXEC Ejercicio1 ‘Cond’
EXEC Ejercicio1 ‘Condiments’*/
create proc paEj1
@categoria varchar(20)
as
select sum(Quantity*o.UnitPrice) as MONTO, CategoryName
from OrderDetails o
inner join Products p on p.ProductID=o.ProductID
inner join Categories c on c.CategoryID=p.CategoryID
where CategoryName like @categoria+'%'/**/
group by CategoryName
exec paEj1 'Condiments'
exec paEj1 'Con'

/*2. Crear un pa que muestre el monto total facturado de un producto, en un añoy


trimestre determinados que son ingresados como parámetros de entrada
EXEC Ejercicio3 ‘Tofu’, 1997, 1*/
create proc paej2
@producto varchar(20), @año int, @trimestre int
as
select sum(Quantity*o.UnitPrice) as MONTO, ProductName
from OrderDetails o
inner join Products p on p.ProductID=o.ProductID
inner join Orders d on d.OrderID=d.OrderID
where ProductName=@producto and year(orderdate)=@año and
DATENAME(qq,OrderDate)=@trimestre
group by ProductName
exec paej2'Tofu',1997,4
/*Construir un pa que reciba un identificador de pedido y que devuelva en una
variable
de salida su monto de facturación correspondiente*/
create proc paej3
@pedido int, @monto decimal (9,2) output
as
select @monto=sum(Quantity*unitprice)
from orderdetails
where orderid=@pedido

declare @x decimal(9,2)
exec paej3 10250,@x output
select @x
/*4 Construir un pa que reciba un identificador de pedido y que devuelva en una
variable
de salida el número de días que demora la entrega
*/
create proc paej4
@pedido int, @dias int output
as
select @dias=DATEDIFF(dd,shippeddate,requireddate)
from Orders
where OrderID=@pedido

declare @x int
exec paej4 10248, @x output
select @x
/*Construir un PA que permita registrar un nuevo empleado.
*/
create proc painsertarempleado
@apellido varchar(10),
@nombre varchar(10)
as
insert into Employees(LastName,FirstName)
values(@apellido,@nombre)

exec painsertarempleado 'Melgar','Jose'


select *
from Employees
/*Construir un PA que permita actualizar datos de un empleado*/
create proc pamodificaempleado
@apellido varchar(10),
@nombre varchar(10),
@id int
as
update Employees set LastName=@apellido, FirstName=@nombre
where EmployeeID=@id

exec pamodificaempleado 'Rojas','Juana',23


select *
from Employees
/*7 Construir un PA que permita eliminar un nuevo empleado.*/
create proc paeliminaempleado
@id int
as
delete Employees
where EmployeeID=@id

exec paeliminaempleado 12

select *
from Employees

drop proc Ejercicio8

create proc Ejercicio8


@año int,
@codigodelpedido int output,
@dias int output
as
select top 5 @codigodelpedido=p.ProductID,
@dias=DATEDIFF(dd,o.ShippedDate,o.RequiredDate)
from Products p
inner join OrderDetails od on p.ProductID=od.ProductID
inner join Orders o on od.OrderID=o.OrderID
where year(o.RequiredDate)=@año

declare @x int
declare @y int
exec Ejercicio8 1996,@x output, @y output

/*9) Construir un pa que muestre la categoría que obtuvo el máximo monto total de
ventas
totales en un año determinado; y que además permita insertar un registro en la
tabla
llamada ResumenAnual (deberá usar el script para crar la tabla), conteniendo los
datos
que se muestran en su estructura. Deberá validar que no se registrevarias veces
para el
mismo año*/
CREATE TABLE ResumenAnual (
id int IDENTITY (1, 1) NOT NULL ,
año int NULL ,
monto decimal(9, 2) NULL,
categoria varchar(30) NULL
) ON [PRIMARY]
GO
/*=====*/
create proc paej9 @año int as
if not exists(select * from ResumenAnual where año=@año)
BEGIN
declare @categoria varchar(20),@monto decimal(9,2)/*2*/
select top 1 @categoria=CategoryName, @monto=sum(Quantity*d.UnitPrice)/*1*/
from Categories c
inner join Products p on p.CategoryID=c.CategoryID
inner join OrderDetails d on p.ProductID=d.ProductID
inner join Orders o on o.OrderID=d.OrderID
where year(OrderDate)=@año
group by CategoryName
order by sum(Quantity*d.UnitPrice) desc/*1*/
insert into ResumenAnual values (@año,@monto,@categoria)/*2*/
end

exec paej9 1998


select *
from resumenanual

También podría gustarte