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
Definiendo Procedimientos Almacenados
Un procedimiento es un programa dentro de la base de datos que ejecuta una acción o conjunto de acciones específicas. Es una colección de Ordenes SQL Incrementar la Performance de Tareas Repetitivas Aceptan Parámetros y Retornan Valores Retorna Valores de Estado Indicando éxito o fracaso
4
Ventajas de los Procedimientos Almacenados
Simplificación de la Gestión: Los Procedimientos almacenados pueden permitir que la lógica del negocio se encuentre como una API en la base de datos, que puede simplificar la gestión de datos y reducir la necesidad de codificar la lógica en el resto de los programas cliente. Seguridad: Es mucho mejor usar Stored procedure por seguridad. Los procedimientos almacenados facilitan algunas tareas de administración de seguridad y asignación de permisos-
5
Ventajas de los Procedimientos Almacenados
Centralización de la definición: al formar parte de la base de datos los procedimientos almacenados están en un lugar centralizado y pueden ser ejecutados por cualquier aplicación que tenga acceso a la misma. Reducción del tráfico de red: una sentencia formada por decenas, cientos o incluso miles de líneas de código SQL puede escribirse como un procedimiento almacenado en el servidor y ejecutarse simplemente mediante el nombre de dicho procedimiento, en lugar de enviar todas las líneas de código por la red desde el cliente hasta el servidor
6
Ventajas de los Procedimientos Almacenados
Ejecución centralizada en el Servidor: La ventaja es que cuando está en acción, en respuesta a una petición de usuario, el procedimiento almacenado corre directamente bajo el control del motor de bases de datos, generalmente en un servidor separado aumentando con ello, generalmente, la rapidez del procesamiento del requerimiento. Encapsulamiento: como se dijo anteriormente, los procedimientos almacenados encapsulan gran parte de la lógica del negocio a las aplicaciones que los utilizan
7
Creación de Stored Procedures
CREATE PROCEDURE <nombre_procedure> <tipo>, ...] AS -- Sentencias del procedure
8
Creando Procedimientos Almacenados
Se crean en la BD Activa con CREATE PROCEDURE Use library GO CREATE PROC sp_lista_books AS SELECT * FROM TEXTO WHERE due_date < GETDATE() Permiten 32 niveles de anidamiento Use sp_help para visualizar su contenido
9
Crear y borrar procedimientos almacenados
Sintaxis simplificada para create: create proc procedure_name as statements return Ejemplo: create proc proc_update_titles update titles set price = price * $0.95 where total_sales < 3000 Sintaxis simplificada para drop: drop proc procedure_name drop proc proc_update_titles
10
Ejecutando Stored Procedures
Ejecutando un Stored Procedure EXEC sp_lista_books Ejecutando un Stored Procedure con la orden INSERT INSERT INTO customers EXEC employee_customer
11
Variables Los procedimientos almacenados pueden crear y usar variables locales Las variables sólo existen mientras exista el procedimiento Las variables no las puede usar otro proceso Ejemplo: create proc proc_update_under_half_titles as real = max(total_sales) from titles / 2 select title, total_sales from titles where total_sales update titles set price = price * $0.95 return
12
Sentencias válidas e inválidas
Un procedimiento almacenado puede: Seleccionar y modificar datos Crear tablas temporales y permanentes Llamar otros procedimientos almacenados Referenciar objetos de bases de datos Un procedimiento almacenado no puede ejecutar: use database create view create rule create procedure create trigger
13
Parámetros de entrada An input Parámetro is a variable local to a procedimiento almacenado that can receive a value from the exec procedure Sentencia
14
Usando Parámetros de entrada
Se incluyen al inicio del Stored Procedure con su datatype Se pueden incluir valores por defecto CREATE PROCEDURE SP_CONSULTA @CC VARCHAR(10) AS SELECT DESC_ART, STOCK FROM ARTICULO WHERE EXEC SP_CONSULTA ‘254’
15
El control de flujo en Transact-SQL
16
Usando Parámetros de entrada
17
Usando Parámetros de entrada
18
Ejemplo
19
Usando Parámetros de salida
20
Uso de parámetros por referencia
En muchos casos se requiere obtener un parámetro de salida como resultado de la ejecución del procedimiento. La solución para este caso es utilizar la palabra reservada OUTPUT para los argumentos de salida. Ejemplo Elaborar un procedimiento almacenado que reporte la cantidad de artículos registrados. CREATE PROCEDURE SP_CUENTA_ARTICULOS @NART INT OUTPUT AS COUNT(*) FROM ARTICULO) RETURN(0)
21
Uso de parámetros por referencia
En muchos casos se requiere obtener un parámetro de salida como resultado de la ejecución del procedimiento. La solución para este caso es utilizar la palabra reservada OUTPUT para los argumentos de salida. Ejecución: INT EXEC OUTPUT SELECT
22
Retorno de valores A return Parámetro is a variable local to a procedimiento almacenado that can send a value to the exec procedure Sentencia
23
Estructuras de Control
1) Estructuras lógicas: IF – THEN – ELSE A) IF-THEN B) IF-THEN-ELSE C) IF-THEN-ELSIF 2) Expresiones CASE 3) Estructuras de BUCLE A) Bucles simples B) Bucles WHILE C) Bucles FOR 4) GOTO y ETIQUETAS A) Restricciones de GOTO B) Etiquetado
24
Estructuras de Control
A) Estructuras lógicas: IF – THEN – ELSE Su sintaxis es: IF <expresión_booleana> THEN Secuencia_de_órdenes; [ELSIF <expresión_booleana> THEN Secuencia_de_órdenes;] … [ELSE END IF; Donde <expresiones_booleanas> es cualquier expresión que de cómo resultado un valor booleano. Las cláusulas ELSIF y ELSE son opcionales y puede haber tantas cláusulas ELSIF como se quiera.
25
Estructuras de Control
1) Estructuras lógicas: IF – THEN – ELSE A) IF – THEN Si se evalúa la condición y resulta verdadera, se ejecutan uno o más líneas de código de programa. En el caso de que la condición resulte ser falsa, NO se realiza NINGUNA acción. IF fecha_nac<’ ’ THEN -- No termina con un ; salario:= salario *1.15; -- aumento de salario en un 15% END IF; Se pueden anidar varias instrucciones: IF fecha_nac<’ ’ THEN IF apellido =‘Martínez’ THEN -- IF ANIDADO END IF; -- END IF OBLIGATORIO
26
Estructuras de Control
1) Estructuras lógicas: IF – THEN – ELSE B) IF – THEN – ELSE Si se evalúa la condición y resulta verdadera, se ejecutan uno o más líneas de código de programa. En el caso de que la condición resulte ser falsa, se ejecutan las instrucciones que siguen a la instrucción ELSE. IF fecha_nac<’ ’ THEN -- No termina con un ; salario:= salario *1.15; -- aumento de salario en un 15% ELSE -- No termina con un ; salario:= salario* 1.05; -- aumento de salario en un 5% END IF; Se pueden anidar varias instrucciones IF-THEN-ELSE. Sólo se permite una instrucción ELSE en cada instrucción IF .
27
Estructuras de Control
1) Estructuras lógicas: IF – THEN – ELSE C) IF – THEN – ELSIF Si se evalúa la condición y resulta verdadera, se ejecutan uno o más líneas de código de programa. En el caso de que la condición resulte ser falsa, se evalúa la condición especificada en el ELSIF. IF apellido =‘Pérez’ THEN salario:= salario *1.10; -- aumento de salario en un 10% ELSIF apellido =‘Martínez’ THEN salario:= salario *1.15; -- aumento de salario en un 15% ELSIF apellido=‘Alvarez’ THEN salario:= salario *1.20; -- aumento de salario en un 20% ELSE salario:= salario* 1.05; -- aumento de salario en un 5% END IF; -- Sólo se necesita un único END IF
28
Estructuras de Control
2) Expresiones CASE La instrucción CASE es una evolución en el control lógico. Se diferencia de las estructuras IF-THEN-ELSE en que se puede utilizar una estructura simple para realizar selecciones lógicas en una lista de valores. Puede utilizarse también para establecer el valor de una variable. Su sintaxis es: CASE [variable] WHEN expresión1 THEN valor1; WHEN expresión2 THEN valor2; WHEN expresión3 THEN valor3; WHEN expresión4 THEN valor4; ELSE valor5; END CASE; No existe límite para el número de expresiones que se pueden definir en una expresión CASE.
29
Estructuras de Control
EJEMPLO: DECLARE @equipo varchar(100); @ciudad varchar(50):= ‘MADRID’; BEGIN CASE ciudad WHEN ‘MADRID’ THEN equipo:=‘RealMadrid’; WHEN ‘BARCELONA’ THEN equipo:=‘FCBarcelona’; WHEN ‘LIMA’ THEN equipo:= ‘Universitario’; ELSE equipo:=‘SIN EQUIPO’; END CASE; DBMS_OUTPUT.PUT_LINE(equipo); END;
30
Estructuras de Control
2) Expresiones CASE Cada cláusula WHEN puede tener su propia expresión a evaluar. En este caso, después del CASE no aparece ninguna expresión. EJEMPLO: CASE WHEN precio<11 THEN descuento:=2; WHEN precio>10 and precio<25 THEN descuento:=5; WHEN precio>24 THEN descuento:=10; ELSE descuento:=15: END CASE;
31
Estructuras de Control
3) Estructuras de BUCLE A) Bucles simples Su sintaxis es: LOOP <Secuencia_de_órdenes>; END LOOP; Este bucle sería infinito, no tiene condición de parada. Para salir de un bucle le pondremos la orden EXIT, que su sentencia es: EXIT [WHEN <Condición>]; Esta orden sería equivalente a: IF <Condición> THEN EXIT; END IF;
32
Estructuras de Control
3) Estructuras de BUCLE A) Bucles simples EJEMPLO: DECLARE V_Contador BINARY_INTEGER:=1; BEGIN LOOP INSERT INTO Tabla (Valor) VALUES (V_Contador); V_Contador:=V_Contador +1; EXIT WHEN V_Contador =10; END LOOP; END;
33
Estructuras de Control
3) Estructuras de BUCLE B) Bucles WHILE Su sintaxis es: WHILE <Condición> LOOP <Secuencia_de_órdenes>; END LOOP; Antes de entrar en el bucle evalúa la condición, si es verdadera, entrará. Si la condición es falsa o nula el bucle se termina. Hay que tener en cuenta que si la condición del bucle no toma el valor TRUE la primera vez que se le comprueba el bucle, no llegará nunca a ejecutarse. Pueden usarse las órdenes EXIT o EXIT WHEN dentro de un bucle WHILE para salir del bucle, sin llegar a terminar la condición.
34
Estructuras de Control
3) Estructuras de BUCLE B) Bucles WHILE EJEMPLO: DECLARE V_Contador BINARY_INTEGER:=1; BEGIN WHILE Contador <11 LOOP INSERT INTO Tabla (Valor) VALUES (V_Contador); V_Contador:=V_Contador +1; END LOOP; END;
35
Estructuras de Control
3) Estructuras de BUCLE C) Bucles FOR En el caso en que sepamos el número de iteraciones en que se ejecutarán los bucles simples y WHILE utilizaremos los bucles FOR. Su sintaxis es: FOR <contador_bucle> IN [ REVERSE ] menor . . mayor LOOP Secuencia_de_órdenes END LOOP; donde <contador_bucle> es una variable que no hace falta que se declare ya que lo hace de forma implícita como BINARY_INTEGER. Los valores menor…mayor muestra el rango en que se ejecutará el bucle.
36
Estructuras de Control
3) Estructuras de BUCLE C) Bucles FOR EJEMPLO: BEGIN FOR V_Contador IN LOOP INSERT INTO Tabla (Valor) VALUES (V_Contador); END LOOP; END;
37
Estructuras de Control
4) GOTO y etiquetas Su sintaxis es: GOTO <Etiqueta>; donde <Etiqueta> es una etiqueta definida en el bloque PL/SQL. Al evaluar una orden GOTO el control pasa inmediatamente a la orden identificada por la etiqueta, por ejemplo: BEGIN DBMS_OUTPUT.PUT_LINE(‘Esto es un ejemplo.’); GOTO Etiqueta_1; DBMS_OUTPUT.PUT_LINE(‘No hace el GOTO.’); <<Etiqueta_1>> DBMS_OUTPUT.PUT_LINE(‘Entra en el GOTO.’); END;
38
Estructuras de Control
4) GOTO y etiquetas USO: P.e.: Para hacer más legible el bloque de ejecución con manejadores de excepciones complejos en bloques anidados. Restricciones de GOTO • No se puede saltar al interior de un bloque anidado • No se puede saltar al interior de un bucle • No se puede saltar al interior de una orden IF Etiquetado A los bucles pueden ponérseles etiquetas de forma que las usemos en la sentencia EXIT. En el caso de que se le añada una etiqueta a un bucle habrá que ponerla también al final del bucle.
39
FIN
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.