Los procedimientos almacenados en SQL Server son programas almacenados en el servidor de bases de datos que contienen instrucciones SQL y ofrecen ventajas como mejor rendimiento, reutilización de código, seguridad, mantenibilidad y gestión, y reducción de la carga de red al ejecutar solo la llamada al servidor en lugar de instrucciones SQL individuales.

Los procedimientos almacenados ofrecen una serie de beneficios que los hacen una opción conveniente para trabajar con SQL Server. Uno de los principales beneficios es que se almacenan en el servidor de base de datos, lo que permite que se ejecuten de forma más eficiente, mejorando el rendimiento. Además, al compilar y almacenar en caché el procedimiento almacenado, se puede reducir el tiempo de ejecución y minimizar la carga en la red al evitar la transmisión de múltiples instrucciones SQL.

Otro beneficio es la reutilización de código, ya que los procedimientos almacenados se pueden invocar desde múltiples aplicaciones o consultas, lo que permite compartir lógica de negocio compleja y común entre diferentes partes de una aplicación o incluso entre múltiples aplicaciones.

La seguridad también es una ventaja importante, ya que los procedimientos almacenados pueden ayudar a mejorar la seguridad de los datos al permitir un control más granular sobre los permisos de acceso. En lugar de otorgar permisos directamente a las tablas, se pueden otorgar permisos solo para ejecutar el procedimiento almacenado, protegiendo así los datos subyacentes. Además, los procedimientos almacenados permiten una mejor mantenibilidad y gestión del código, ya que al almacenar la lógica en ellos, los cambios y actualizaciones se pueden realizar de manera centralizada y controlada en el servidor de base de datos, lo que facilita la gestión y el mantenimiento del código. Por último, la reducción de la carga de red es otra ventaja de los procedimientos almacenados, ya que al ejecutarlos, solo se envía la llamada al servidor de base de datos, no las instrucciones SQL individuales. Esto puede reducir significativamente la cantidad de tráfico de red necesario, especialmente para operaciones complejas o repetitivas. En resumen, los Store Procedures son una herramienta muy útil en SQL Server ya que ofrecen una serie de beneficios, como mejor rendimiento, reutilización de código, seguridad, mantenibilidad y gestión, y reducción de la carga de red.

--2do procedimiento almacenado(CON PARAMETROS)

create Procedure ProClienteB(
@City varchar(15)
)as
begin
	select * from Customers
	where City = @City
end

exec ProClienteB 'New york'

--3er procedimiento almacenado (con dos parametros)
alter procedure ProClienteC(
@City varchar(15),
@ContactTitle varchar(30)
)as
begin
	select * from Customers
	where City = @City or ContactTitle = @ContactTitle
end

--ejecutamos
exec ProClienteC 'London', 'Sales Representative'
select * from Customers

Procedimiento almacenado con parametros y constantes


/*
MOSTRAR EL CONTENIDO DE LA TABLA CLIENTES
1ER PROCEDIMIENTO ALMACENADO (SIN PARAMETROS)
*/
ALTER PROCEDURE ProcCliente
AS
BEGIN
SELECT * FROM Customers
where City = 'Berlin'
END
EXEC ProcCliente
SELECT * FROM Customers
where City = 'Berlin'
-- 2DO PROCEDIMIENTO ALMACENADO (CON 1 PARAMETRO)
CREATE PROCEDURE ProcClienteB(
@City varchar(15)
)AS
BEGIN
SELECT * FROM Customers
WHERE City = @City
END
EXEC ProcClienteB 'London'
-- 3ER PROCEDIMIENTO ALMACENADO (CON DOS PARAMETROS)
ALTER PROCEDURE ProcClienteC(
@City varchar(15),
@ContacTitle varchar(30)
)AS
BEGIN
SELECT * FROM Customers
WHERE City = @City OR ContactTitle = @ContacTitle
END
-- Ejecutar
EXEC ProcClienteC 'London', 'Sales Representative'
SELECT * FROM Customers
-- Cree un procedimiento almacenado que reciba un par metro tipo precio unitario�
-- llamado ajuste y otro tipo c digo producto llamado codprod. Cree una constante�
-- factor con valor 1.1 y al precio unitario en las tablas producto y detalle de
ordenes,
-- multipl quelos por el ajuste y el factor pero solo al producto cuyo c digo� �
coincida con el par metro codprod�
CREATE PROCEDURE AjustPrecUnit(
@Ajuste decimal (10,4),
@CodProd int
)AS
BEGIN
Declare @Factor money
Set @Factor = 1.1
UPDATE Products
SET UnitPrice = UnitPrice*@Ajuste*@Factor
where ProductID=@CodProd
UPDATE OrderDetails
SET UnitPrice = UnitPrice*@Ajuste*@Factor
WHERE ProductID=@CodProd
END
select * from Products
select * from OrderDetails
EXEC AjustPrecUnit 1.2, 10

Tarea S8 -1