Está en la página 1de 10

Bases de Datos II

Procedimientos Almacenados
Procedimientos Almacenados
 Conjunto de comandos que pueden ser ejecutados directamente en el servidor, es
decir, será ejecutado por el servidor de Base de Datos y no por el programa cliente
que lo accede, permitiendo la ejecución de una acción o conjunto de acciones
especificas.
 Sealmacenan en la propia Base de Datos y constituyen un objeto más dentro de esta.
Tienden a mejorar el rendimiento de los sistemas debido a que reducen el
intercambio entre cliente y servidor. Los procedimientos almacenados son
reutilizables, de manera que los usuarios mediante la aplicación cliente no necesitan
relanzar los comandos individuales, sino que pueden llamar el procedimiento para
ejecutarlo en el servidor tantas veces como sea necesario.
Procedimientos Almacenados
 Los procedimientos almacenados son muy útiles sobre todo en arquitecturas
cliente/servidor donde hay un servidor muy potente el cual se puede aprovechar
para ejecutar procesos, consultas y actualizaciones complejas en la base de datos.
 Por ejemplo, si deseamos obtener un reporte complejo que incluya instrucciones
condicionales y cálculos complejos con datos obtenidos de varias tablas, un
procedimiento almacenado es nuestro mejor aliado. También se pueden ejecutar
complejos procesos que a veces tardan horas cuando son ejecutados desde el
cliente, ya que en tales casos la información debe pasar del servidor al cliente y
viceversa.
 Casi siempre las computadoras servidores son poderosas máquinas con mucha
memoria, discos rápidos y uno o más procesadores también muy rápidos. Por lo
tanto, al ejecutar los procesos mediante procedimientos almacenados estamos
aprovechando toda esa capacidad de cómputo disponible en
el hardware del servidor.
Procedimientos Almacenados
 Cuando múltiples aplicaciones cliente se escriben en distintos lenguajes o
funcionan en distintas plataformas, pero necesitan realizar la misma operación en
la base de datos. Cuando la seguridad es muy importante. Los bancos, por
ejemplo, usan procedimientos almacenados para todas las operaciones comunes.
 Esto proporciona un entorno seguro y consistente, y los procedimientos pueden
asegurar que cada operación se loguea apropiadamente. En tal entorno, las
aplicaciones y los usuarios no obtendrían ningún acceso directo a las tablas de la
base de datos, sólo pueden ejecutar algunos procedimientos almacenados.
 Los procedimientos almacenados están compuestos por algunos de estos
elementos:
 Parámetros de entrada (pueden esperar parámetros)
 Parámetros de salida (pueden devolver resultados)
 Declaración de variables (puede usarse variables en su cuerpo)
 Cuerpo del procedimiento (en su cuerpo se indican las acciones a realizar)
Procedimientos Almacenados
 Tanto los parámetros de entrada como los de salida son opcionales.
Podemos tener un procedimiento que no tenga parámetros de entrada, pero
sí de salida y viceversa. Como todo buen programador sabe, los parámetros
de entrada sirven para pasarle datos al procedimiento que necesita para
llevar a cabo una acción determinada. Los parámetros de salida devuelven al
programa cliente que ejecutó el procedimiento el resultado del mismo.
 Sintaxis:

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


AS
BEGIN
-- Sentencias del procedure
END
 Para Modificar el Procedimiento: Solo se cambia CREATE por ALTER.
Ejemplo
 Elsiguiente ejemplo muestra un procedimiento almacenado, llamado spAgregarCliente
que añade clientes, o sea, inserta un registro en la tabla ‘Clientes’:
 Sintaxis:

CREATE PROCEDURE spAgregarCliente(


@nombre varchar(100),
@apellidos varchar(100),
@fecha_nacimiento datetime,
@email varchar(50)
)
AS
BEGIN
INSERT INTO CLIENTES (nombre, apellidos, fecha_nacimiento, email)
VALUES (@nombre, @apellidos, @ fecha_nacimiento, @email)
END

 Llamado: exec spAgregarCliente 'Carlos', 'Vargas', '19790103', 'cvargas@Gmail.com';


Procedimiento Almacenado con Parámetro
de Salida
 Si queremos que los parámetros de un procedimiento almacenado sean de entrada-salida
debemos especificarlo a través de la palabra clave OUTPUT , tanto en la definición del
procedimiento como en la ejecución. El siguiente ejemplo muestra la definición de un
procedimiento con parámetros de salida.
CREATE PROCEDURE sp_ObtenerSaldo(
@numCuenta varchar(20),
@saldo decimal(10,2) output
)
AS
BEGIN
SELECT @saldo = SALDO
FROM CUENTA
WHERE NUMCUENTA = @numCuenta
END
 Llamado:
DECLARE @saldo decimal(10,2);
EXEC sp_ObtenerSaldo '200700000001', @saldo output;
PRINT @saldo;
Procedimiento Almacenado con Condicional
Y Retorna Valor
CREATE PROCEDURE sp_EstaEnNumerosRojos(
@numCuenta varchar(20)
)
AS
BEGIN
IF (SELECT SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta) < 0
BEGIN
RETURN 1
END
ELSE
RETURN 0
END
 Llamado:

DECLARE @rv int;


EXEC @rv = sp_EstaEnNumerosRojos '200700000001’;
PRINT @rv;
Procedimiento Almacenado: TRY CATCH y
TRAN
ALTER PROCEDURE spu_AgregarCliente(
@nombre varchar(100),
@apellido1 varchar(100),
@apellido2 varchar(100),
@dni varchar(20),
@fecha_nacimiento datetime
)
AS
BEGIN
BEGIN TRY
BEGIN TRAN
INSERT INTO CLIENTES (nombre, apellido1, apellido2, dni, fecha_nacimiento)
VALUES (@nombre, @apellido1, @apellido2, @dni, @fecha_nacimiento) ;
COMMIT
END TRAN
END TRY
BEGIN CATCH
ROLLBACK;
PRINT ERROR_MESSAGE();
END CATCH
END
•Gracias!

También podría gustarte