Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Ing. Francisco Rodríguez
UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE ING. INDUSTRIAL Base de Datos Resultados BASE DATOS Internet Requerimientos Docente: Ing. Francisco Rodríguez
2
Procedimientos Almacenados
Base de Datos Tema 9: Procedimientos Almacenados (Stored Procedures)
3
Procedimientos Almacenados
Procedimiento Almacenado (Stored Procedure): Colección de sentencias SQL, con un nombre, almacenadas en el servidor dentro de la BD. Finalidad: Encapsular tareas repetitivas
4
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.
5
Procedimientos Almacenados
Tipos: Del sistema Locales Temporales Remotos Extendidos
6
Procedimientos Almacenados
Procedimientos almacenados del sistema: Devuelven información de las tablas del sistema y ejecutan tareas de mantenimiento. En SQL Server se almacenan en la BD master y sus nombres comienzan con sp_: sp_help
7
Procedimientos Almacenados
Procedimientos almacenados locales: Creados en las BD de usuario individuales. Procedimientos almacenados temporales: En SQL Server sus nombres empiezan con # o ## (si son locales o globales). Los procedimientos almacenados temporales se crean siempre en la BD tempdb
8
Procedimientos Almacenados
Procedimientos almacenados remotos: Soportan la funcionalidad de consultas y operaciones distribuidas. Procedimientos almacenados extendidos: Se ejecutan fuera del ambiente del servidor. En SQL Server, sus nombres comienzan con xp_. Los procedimientos almacenados extendidos son funciones dentro de una DLL que incrementan la funcionalidad de SQL Server.
9
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.
10
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
11
Creación de Procedimientos Almacenados
Ejecución en SQL Server se emplea la sentencia EXECUTE seguida del nombre del procedimiento y sus parámetros. EXECUTE sp_listado En SQL Server se puede usar la forma abreviada de EXECUTE: EXEC.
12
Creación de Procedimientos Almacenados
Los procedimientos pueden anidarse (un procedimiento llama a otro): El nivel de anidamiento es limitado. Si un P1 llama a P2, P2 puede acceder a todos los objetos definidos localmente en P1. En SQL Server puede haber hasta 32 niveles de anidamiento, y la variable guarda el nivel de anidamiento actual.
13
Creación de Procedimientos Almacenados
En SQL Server: Para ver información sobre los procedimientos: sp_help , sp_helptext y sp_depends Para obtener una lista de procedimientos: sp_stored_procedures
14
Recomendaciones Cualificar los nombres de los objetos dentro del cuerpo del procedimiento. En SQL Server, tratar de evitar romper la cadena de permisos. Realizar un procedimiento por cada tarea (cohesión). Crear, probar y corregir los procedimientos en el servidor, luego hacer la prueba en los clientes.
15
Modificación y Borrado
En SQL Server, para modificar un procedimiento se puede usar la sentencia ALTER PROC[EDURE] Ejemplo SQL Server: ALTER PROC esquema1 AS SELECT CONVERT(char(8),due_date,1) due_date, codigo, nrocopia, SUBSTRING(title, 1, 30) titulo, FROM Texto ORDER BY due_date GO
16
Modificación y Borrado
Borrado de un procedimiento (SQL Server): DROP PROC[EDURE] esquema1 En el caso de SQL Server, también se puede borrar un procedimiento desde SSMS
17
Parámetros de Entrada Parámetros de entrada:
Permiten pasar información a los procedimientos. Se los debe declarar en la sentencia CREATE PROCEDURE.
18
Parámetros de Entrada 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.
19
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.
20
Parámetros de Entrada SQL Server: CREATE PROC inserta_cliente
@codi nomb varchar(20) AS Begin Insert into Cliente(codigo, apellidos, nombres) End Go
21
Parámetros de Entrada Llamada a un procedimiento con parámetros de entrada: SQL Server Por referencia Por posición En el caso de SQL Server, no se puede mezclar ambas formas durante el llamado del procedimiento.
22
Parámetros de Entrada Llamada por referencia:
En la sentencia EXEC se especifica el parámetro de la = valor. El orden de los parámetros puede ser cualquiera. Se pueden omitir parámetros. Se puede = DEFAULT.
23
Parámetros de Entrada Llamada por referencia: EXEC listado_adultos
@nombre = 'Linda', @apellidos = 'Lopez', @calle = ‘Mantaro', @ciudad = ‘Trujillo',
24
Parámetros de Entrada Llamada por posición (SQL Server):
Se pasan los valores en el mismo orden en que fueron definidos el procedimiento. Se pueden omitir parámetros en valores por defecto, pero no se debe interrumpir la secuencia. Se usan también valores nulos y DEFAULT como parámetros.
25
Parámetros de Entrada Llamada por posición (SQL Server):
EXEC listado_adultos 'Linda', 'Lopez', ‘Mantaro', ‘Trujillo',
26
Parámetros de Salida Un procedimiento puede devolver información a quien lo llama en forma de parámetros de salida. SQL Server usa OUTPUT al definir el procedimiento: CREATE PROCEDURE dbo.mathtutor @m1 smallint, @resultado smallint OUTPUT AS GO
27
Parámetros de Salida Llamada a un procedimiento con parámetros de salida: SQL Server Se emplea la cláusula OUTPUT. Quien llama al procedimiento debe tener una variable para guardar el valor de salida. smallint EXEC mathtutor 5, OUTPUT SELECT 'El resultado es: '
28
Estructuras de Control de Flujo
29
Estructuras de Control de Flujo
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).
30
Estructuras de Control de Flujo
32
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
35
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.
36
CREATE PROCEDURE MODIFICA_INQUILINO
@COD_USUA varchar(30), @APELL_AVAL float, @EST_CIVIL_INQ varchar(50) AS -- Variables float -- Obtener el Haber Básico Actual del Inquilino = HABER_BAS_INQ From INQUILINO Where COD_USUA -- Verificar el Haber Básico del Inquilino Begin Select 'El Haber Básico del Inquilino debe ser menor a 600 soles' Return End
37
-- Actualizar los Datos
Update INQUILINO Set COD_USUA NOM_AVAL_INQ APELL_AVAL HABER_BAS_INQ EST_CIVIL_INQ LUG_TRAB_INQ Where COD_USUA
38
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 BREAK y CONTINUE controlan el funcionamiento de las instrucciones dentro de un bucle while. BREAK permite salir del bucle while. CONTINUE hace que el bucle while se inicie de nuevo.
39
CASE La función CASE es una expresión especial de Transact SQL que permite que se muestre un valor alternativo dependiendo de una columna. Este cambio es temporal, con lo que no hay cambios permanentes en los datos. La función CASE está compuesta de: La palabra CASE El nombre de la columna que se va transformar Cláusulas WHEN que se especifican las expresiones que se van a buscar y cláusulas THEN que especifican las expresiones que las van a reemplazar La palabra END
40
Ejemplo: Select COD_USUA, NOM_USUA, APEPATER_USUA, APEMATER_USUA, Case Month(FEC_NAC_USUA) When 1 Then 'Enero' When 2 Then 'Febrero' When 3 Then 'Marzo' When 4 Then 'Abril' When 5 Then 'Mayo' When 6 Then 'Junio' When 7 Then 'Julio' When 8 Then 'Agosto' When 9 Then 'Septiembre' When 10 Then 'Octubre' When 11 Then 'Noviembre' When 12 Then 'Diciembre' End As Mes_Nacimiento From USUARIO
41
Crear un sp que permita incrementar el haber básico de un inquilino en función de su estado civil (20% para casados o viudos y 10% para los solteros y divorciados). Asimismo, si el inquilino tiene una comisión aumentar su haber con ese monto. Create Procedure spIncHaberInquilino @Inquilino Numeric(10,2) = Null --Parámetro con valor por defecto As Begin -- Inicio del sp -- Validar que el código y la descripcion no sean nulas Is Null ) Begin Print 'El código del inquilino no puede ser NULO!!!' Return End
42
-- Validar si el inquilino existe If Not Exists(Select
-- Validar si el inquilino existe If Not Exists(Select * From Inquilino Where Cod_Usua Begin Print 'Actualizacion cancelada. El inquilino no existe.' Return End -- Variables locales para el proceso Int Char(1) Int -- Determinar valores del inquilino = = Est_Civil_Inq From Inquilino Where Cod_Usua
43
-- Determinar porcentaje de incremento In ('C','V')) * 0.20 Else * Eliminar el departamento Update Inquilino Set Haber_Bas_Inq = Haber_Bas_Inq + Where Cod_Usua End -- Fin del spIncHaberInquilino
44
FIN
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.