Anda di halaman 1dari 6

PROCEDIMIENTOS ALMACENADOS

Un procedimiento es un programa dentro de la base de datos que ejecuta una


accin o conjunto de acciones especficas.
Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un
bloque de cdigo.
En Transact SQL los procedimientos almacenados pueden devolver valores
(numrico entero) o conjuntos de resultados
Un procedimiento almacenado es un elemento de base de datos reutilizable
almacenado que realiza alguna operacin en la base de datos. Un
procedimiento almacenado contiene cdigo SQL que puede, entre otras cosas,
insertar, actualizar o eliminar registros.
Los procedimientos almacenados tambin pueden alterar la estructura de la
base de datos. Por ejemplo, pueden utilizar un procedimiento almacenado para
aadir una columna de tabla o borrar una tabla.
Por lo general, los procedimientos almacenados de SQL Server pueden realizar
lo siguiente:

Aceptar parmetros de entrada y devolver mltiples valores en forma de


parmetros de salida al procedimiento de llamada o el lote.

Contener instrucciones de programacin que realicen operaciones en la


base de datos, incluyendo llamadas a otros procedimientos.

Devolver un valor de estado a un procedimiento de llamada o lote para


indicar la correcta realizacin o el error (y la razn del error).

SISTAXIS DE LOS PROCEDIMIENTOS ALMACENADOS

Para crear

un

procedimiento

almacenado

debemos

emplear

la

sentencia CREATE PROCEDURE.

CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]

Ing. Ana Doris M. Barrera Loza

AS
-- Sentencias del procedure

Para modificar un procedimiento almacenado debemos emplear la sentencia


ALTER PROCEDURE.

ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...]


AS
-- Sentencias del procedure

Para ejecutar un procedimiento almacenado debemos emplear la sentencia


EXECUTE.
EXECUTE <nombre_procedure>

Para eliminar un procedimiento almacenado debemos emplear la sentencia


DROP PROCEDURE.
DROP PROCEDURE <nombre_procedure>

EJEMPLOS:

Para crear un procedimiento que nos devuelva los 5 productos ms baratos


create procedure Cinco_productos_mas_baratos
as
select top 5 productname as [Nombre de producto], Unitprice from
products order by unitprice asc,productname
Execute Cinco_Productos_mas_baratos

Procedimientos con Parmetros


Crear un procedimiento que permita visualizar a los empleados que cumplan
aos en el mes que se les indique
Create procedure Cumpleaos @mes int
as
select EmployeeID, LastName, FirstName, BirthDate
from Employees where month(Birthdate) = @mes
Execute Cumpleaos 5

Procedimientos con Condicional


Ing. Ana Doris M. Barrera Loza

Crear un procedimiento que indique el nmero de asientos por medio de


parmetros y devolver un mensaje indicando la ubicacin del asiento adems
teniendo en cuenta que nmeros impares al lado de la ventana y nmeros
pares en el pasillo.
Create procedure Asiento @nro int
as
If @nro %2=0
print 'Pasillo'
else
print 'Ventana'
Execute Asiento 5

Procedimientos para actualizacin


Crear un procedimiento que permita ingresar un nuevo registro a la tabla
Territories
CREATE
PROCEDURE
AddTerritories
@territoryid
nvarchar(20),
@territorydescription nvarchar(50), @regionid int
AS
INSERT
INTO
Territories(territoryid,
territorydescription,
regionid)
VALUES(@territoryid, @territorydescription, @regionid)
EXEC AddTerritories '01580','Atlanta','3'

Crear un procedimiento que permita modificar un registro a la tabla Territories


CREATE PROCEDURE Updateterritories @territoryid nvarchar(20),
@territorydescription nvarchar(50), @regionid int
AS
BEGIN
UPDATE Territories
SET
territoryid
=
@territoryid,
territorydescription
=
@territorydescription, regionid= @regionid
WHERE territoryid = @territoryid
END
EXEC Updateterritories '01833','Georgetow','2'

Crear un procedimiento que permita eliminar un registro a la tabla Territories


CREATE PROCEDURE DeleteTerritories @territoryid nvarchar(20)
AS
BEGIN
Ing. Ana Doris M. Barrera Loza

DELETE Territories
WHERE Territoryid = @territoryid
END
EXEC DeleteTerritories '01580'

Un procedimiento almacenado puede devolver valores numricos enteros a


travs de la instruccin RETURN. Normalmente debemos utilizar los valores de
retorno para determinar si la ejecucin del procedimiento ha sido correcta o
no. El siguiente ejemplo muestra un procedimiento almacenado que devuelve
valores.
CREATE PROCEDURE EstadoPrecio @productid int
AS
BEGIN
IF (SELECT UNITPRICE FROM PRODUCTS
WHERE PRODUCTID = @productid) < 15
RETURN 0
ELSE
RETURN 1
END

Hacer el siguiente cdigo para ejecutar el procedimiento y obtener el valor


devuelto.
DECLARE @estado int
EXEC @estado = EstadoPrecio '11'
PRINT @estado

Otra caracterstica muy interesante de los procedimientos almacenados en


Transact SQL es que pueden devolver uno o varios conjuntos de resultados.
El siguiente ejemplo muestra un procedimiento almacenado que devuelve un
conjunto de resultados.
CREATE PROCEDURE DetalleVenta @orderid int
AS
BEGIN
SELECT @orderid, productid, unitprice, quantity
FROM [Order Details]
WHERE orderid = @orderid
ORDER BY quantity DESC
END

Ing. Ana Doris M. Barrera Loza

EXEC DetalleVenta '10250'

Ing. Ana Doris M. Barrera Loza

TRIGGERS

Son

disparadores

de

procedimientos,

una

especie

de

procedimientos

almacenados que se ejecutan cuando ocurre un evento sobre alguna tabla.


Un evento es una accin como: Insercin (INSERT), borrado (DELETE),
actualizacin (UPDATE).
La sintaxis para la creacin de triggers es la siguiente:
CREATE TRIGGER Nombre ON tabla FOR accion AS codigo

EJEMPLO:

Crear un trigger que muestre un mensaje cada vez que se inserta un nuevo
registro en la tabla Territories.
CREATE TRIGGER InsertTerr ON Territories FOR Insert AS
print 'Registro ingresado con xito'

Para comprobar el funcionamiento del trigger, insertar un nuevo registro en la


tabla Territories
INSERT INTO Territories
Values ('98105','Boston', '2')

Si queremos borrar el trigger anterior, ejecutar el siguiente cdigo:


DROP TRIGGER InsertTerr

Ing. Ana Doris M. Barrera Loza

Anda mungkin juga menyukai