Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Base de Datos
Resultados
Docente:
Ing. Jorge Sucari
Base de Datos
Tema 9:
Procedimientos Almacenados
(Stored Procedures)
Procedimientos Almacenados
Finalidad:
– Encapsular tareas repetitivas
Procedimientos Almacenados
Características:
– Soportan declaración de variables, ejecución
condicional y otras características de programación.
– Aceptan parámetros de entrada y devuelven valores.
– Devuelven un valor de estado que indica éxito o
falla.
– Pueden llamar a otros procedimientos almacenados.
Procedimientos Almacenados
Tipos:
– Del sistema
– Locales
– Temporales
– Remotos
– Extendidos
Procedimientos Almacenados
Ventajas:
– Encapsulan la lógica de negocio y crean una lógica de
la aplicación reusable.
– Ocultan a los usuarios la complejidad subyacente y
detalles internos de la BD.
– Proveen mecanismos de seguridad.
– Mejoran el rendimiento.
– Reducen el tráfico en la red.
– Reducen la vulnerabilidad debido a los ataques de
infiltración de código intruso.
Creación de Procedimientos Almacenados
Consideraciones:
– Se emplea la sentencia CREATE PROCEDURE.
– Pueden referenciar tablas, vistas, otros procedimientos
y tablas temporales.
– En SQL Server la sentencia CREATE PROCEDURE es
un batch por si mismo.
SQL Server:
CREATE PROC sp_listado
AS
SELECT * FROM TEXTO
GO
Creación de Procedimientos Almacenados
En SQL Server:
– Para ver información sobre los procedimientos:
sp_stored_procedures
Recomendaciones
Parámetros de entrada:
– Permiten pasar información a los procedimientos.
Consideraciones:
– Verificar al principio del procedimiento los valores de
entrada para detectar posibles valores inválidos.
– Proveer valores por defecto apropiados (SQL Server).
– El máximo número de parámetros depende del
SGBDR.
– En el caso de SQL Server 2008, un procedimiento
soporta hasta 2100 parámetros de entrada.
Parámetros de Entrada
Consideraciones:
– El máximo número de variables locales es limitado
solamente por la memoria disponible (depende del
SGBDR).
– Los parámetros tienen un ámbito local al
procedimiento.
Parámetros de Entrada
SQL Server:
@nombre = 'Linda',
@apellidos = 'Lopez',
@calle = ‘Mantaro',
@ciudad = ‘Trujillo',
Parámetros de Entrada
1) IF…ELSE
La palabra clave IF con o sin la compañía ELSE se utiliza
para introducir una condición que determina si se ejecutará
la instrucción siguiente. La instrucción SQL se ejecuta si la
condición se cumple, es decir, si devuelve TRUE
(verdadero)
La palabra clave ELSE introduce una instrucción SQL
alternativa que se ejecuta cuando la condición IF devuelva
FALSE (falso).
Estructuras de Control de Flujo
Ejemplos:
a) Cree un procedimiento almacenado que permita el ingreso de
datos de un usuario. El procedimiento tendrá los siguientes
parámetros de entrada: código, nombre, apellido paterno, apellido
materno, fecha de nacimiento, fecha de registro, tipo de documento,
número de documento y código de estado.
Considere las siguientes condiciones antes de ingresar un usuario:
El código del usuario debe ser único
No deberá ingresar usuarios cuya edad sea menor de 18 años
b) Cree un procedimiento almacenado que permita modificar los
datos de un inquilino. El procedimiento tendrá los siguientes
parámetros de entrada: código de usuario, nombre de aval,
apellido del aval, Haber básico, estado civil y lugar de trabajo
del inquilino. Así mismo, sólo se podrán modificar aquellos
inquilinos cuyo Haber básico sea menor a 600 soles.
CREATE PROCEDURE MODIFICA_INQUILINO
@COD_USUA char(6), @NOM_AVAL_INQ varchar(30),
@APELL_AVAL char(30), @HABER_BAS_INQ float,
@EST_CIVIL_INQ char(1), @LUG_TRAB_INQ varchar(50)
AS
-- Variables
Declare @HABER_BAS_INQ_ACTUAL float
-- Obtener el Haber Básico Actual del Inquilino
Select @HABER_BAS_INQ_ACTUAL = HABER_BAS_INQ
From INQUILINO
Where COD_USUA = @COD_USUA
-- Verificar el Haber Básico del Inquilino
If @HABER_BAS_INQ_ACTUAL>600
Begin
Select 'El Haber Básico del Inquilino debe ser menor a 600 soles'
Return
End
-- Actualizar los Datos
Update INQUILINO
Set COD_USUA = @COD_USUA,
NOM_AVAL_INQ = @NOM_AVAL_INQ,
APELL_AVAL = @APELL_AVAL,
HABER_BAS_INQ = @HABER_BAS_INQ,
EST_CIVIL_INQ = @EST_CIVIL_INQ,
LUG_TRAB_INQ = @LUG_TRAB_INQ
Where COD_USUA = @COD_USUA
2) WHILE
WHILE se utiliza para definir una condición para la ejecución
repetida de una instrucción o un bloque de instrucciones. Las
instrucciones se ejecutan reiteradamente siempre que la
condición especificada es verdadera.
La sintaxis de WHILE es
WHILE BOOLEAN_EXPRESION
EXPRESION_SQL
-- Eliminar el departamento
Update Inquilino
Set Haber_Bas_Inq = Haber_Bas_Inq +
@IncrementoPorEstadoCivil + IsNull(@Comision,0)
Where Cod_Usua = @Inquilino
End
-- Fin del spIncHaberInquilino
FIN