Está en la página 1de 4

Copyright © Todos los Derechos Reservados - Cibertec Perú SAC

Capítulo : Procedimientos almacenados y cursores


Tipo : Guía de laboratorio
Duración : 60 minutos

I. OBJETIVO

Implementar procedimientos almacenados y cursores que permitan automatizar los


procesos de negocios.

II. REQUISITOS

Los siguientes elementos de software son necesarios para la realización del laboratorio:

a) SQL Server 2019 Management Studio.

III. DESCRIPCIÓN

Ejercicio: Crea un procedimiento almacenado con parámetros de entrada.

a. Construya un procedimiento almacenado que devuelva el valor de los campos OrderID,


CustomerID, EmployeeID, OrderDate, ProductID, (OD.Quantity * OD.UnitPrice) de la
tabla Orders y OrderDetails generados por una determinada Orden (OrderID).

 En la barra de herramientas, haga clic en Nueva consulta.

 En la nueva ventana de consultas, escriba la siguiente sentencia Transact-SQL.

CREATE PROCEDURE usp_List_OrderID


@OrderID int
AS
SELECT O.OrderID,
O.CustomerID,
O.EmployeeID,
O.OrderDate,
OD.ProductID,
(OD.Quantity * OD.UnitPrice) as Total
FROM Orders O
INNER JOIN OrderDetails OD ON O.OrderID = OD.OrderID
WHERE O.OrderID = @OrderID

IES Privado Cibertec S.A.C – SQL y modelamiento de base de datos - SQL Server 2019 1
-- Ejecución
EXEC usp_List_OrderID 10248

 Haga clic en el botón Ejecutar de la barra de herramientas para ejecutar la consulta


desarrollada en el paso anterior, o presione F5.

b. Construya un procedimiento almacenado que devuelva el valor de los campos


SupplierID, CompanyName, ContactName, ContactTitle, Address, City, Country, Phone
de la tabla Supplier en donde el campo Phone contenga una determinada secuencia
de dígitos.

 En la barra de herramientas, haga clic en Nueva consulta.

 En la nueva ventana de consultas, escriba la siguiente sentencia Transact-SQL.

CREATE PROCEDURE usp_Supplier


@Phone VARCHAR(15)
AS
SELECT SupplierID,
CompanyName,
ContactName,
ContactTitle,
Address,
City,
Country,
Phone
FROM Suppliers
WHERE Phone LIKE '%' + @Phone + '%'

-- Ejecución
EXEC usp_Supplier '555'

 Haga clic en el botón Ejecutar de la barra de herramientas para ejecutar la consulta


desarrollada en el paso anterior, o presione F5.

IES Privado Cibertec S.A.C – SQL y modelamiento de base de datos - SQL Server 2019 2
c. Elabore un procedimiento almacenado que elimine un determinado producto si este
no ha generado orden alguna.

 En la barra de herramientas, haga clic en Nueva consulta.

 En la nueva ventana de consultas, escriba la siguiente sentencia Transact-SQL.

CREATE PROCEDURE usp_Delete_Product


@ProductID INT
AS
IF EXISTS (SELECT ProductID FROM Products WHERE ProductID =
@ProductID)
BEGIN
IF EXISTS (SELECT ProductID FROM OrderDetails
WHERE ProductID = @ProductID)
BEGIN
PRINT 'EL PRODUCTO TIENE ORDENDES, NO SERA ELIMINADO'
END
ELSE
BEGIN
PRINT 'EL PRODUCTO SERÁ DADO DE BAJA'
END
END
ELSE
BEGIN
PRINT 'EL PRODUCTO NO EXISTE'
END

-- Ejecución
EXEC usp_Delete_Product 4

EXEC usp_Delete_Product 3

 Haga clic en el botón Ejecutar de la barra de herramientas para ejecutar la consulta


desarrollada en el paso anterior, o presione F5.

IES Privado Cibertec S.A.C – SQL y modelamiento de base de datos - SQL Server 2019 3
d. Elabore un procedimiento almacenado que permita saber el nombre de los territorios
que cubre un determinado empleado.

 En la barra de herramientas, haga clic en Nueva consulta.

 En la nueva ventana de consultas, escriba la siguiente sentencia Transact-SQL.

CREATE PROCEDURE usp_Employee_Territory


@EmployeeID INT
AS
SELECT E.EmployeeID,
T.TerritoryDescription
FROM Employees E
INNER JOIN EmployeeTerritories ET ON ET.EmployeeID = E.EmployeeID
INNER JOIN Territories T ON T.TerritoryID = ET.TerritoryID
WHERE E.EmployeeID = @EmployeeID

-- Ejecución
EXEC usp_Employee_Territory 1

 Haga clic en el botón Ejecutar de la barra de herramientas para ejecutar la consulta


desarrollada en el paso anterior, o presione F5.

IES Privado Cibertec S.A.C – SQL y modelamiento de base de datos - SQL Server 2019 4