Ing. Francisco Rodríguez

Slides:



Advertisements
Presentaciones similares
Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título.
Advertisements

Insercion de datos..
Introducción a Transact-SQL
PL/SQL Francisco Moreno Universidad Nacional.
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
Bases de Datos Relacionales
Estructura general de un programa en el servidor de Bases de Datos.
Estructuras de Control en Visual Basic.net
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Estructuras de Control
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Estructuras de Decisión en Visual Basic 6.0
DLM Transact SQL Sesión II Recuperación de información.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
 Do- While y Do- Until Las instrucciones Do-while y Do-until permiten repetir un bloque de código mientras cierta condición sea True o hasta que cierta.
Unidad V: Estatutos en Basic De control o selección if. De ciclos: Do, for, while. Otros estatutos. Solución de problemas aplicando estatutos de control.
UNIDAD IV. Diseño de Base de Datos Relacionales
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
GESTOR DE BASE DE DATOS CARRERA: COMPUTACIÓN E INFORMÁTICA CURSO: TALLER DE SISTEMAS I DOCENTE: ING. JOSÉ EDUARDO QUISPE TAIPE CICLO: QUINTO.
Asignación 6.1 Foro. Ciclos condicionales dinámicos  Estos ciclos deben ser del tipo booleano, es decir que se evaluara una expresión con un resultado.
Administración de Sistemas Gestores de Bases de Datos.
Conferencia 9. ODBC, OLE DB y JDBC.
PL/SQL Francisco Moreno Universidad Nacional.
Sentencia «Do While»..
PL/SQL Francisco Moreno Universidad Nacional.
Estructuras de Control en Visual Basic.net
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Estructuras de Control.
Estructuras Repetitivas Estructuras Repetitivas
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Olimpiadas Chilenas de Informática - Formación
Olimpiadas Chilenas de Informática - Formación
Anexo Chame-San Carlos
Stored Procedures Firebird.
Estructuras de Control en Visual Basic.net
Introducción a Transact-SQL BASES DE DATOS II. Introducción E lenguaje de programación Transact-SQL Tipos de instrucciones de Transact-SQL Elementos de.
Página Web del Lenguaje Pascal.
While... End While Jerónimo Jesica Oropeza William Montes Cesar
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
5. SQL Procedural.
Instrucciones y excepciones
Bucles y estructuras de decisión
Orígenes Funciones Condicionales
Oracle Pl/SQl Developer – Nivel 1
Estructuras de control en PHP
Programación en Java..
Hardware Description Language
Curso de iniciación al trabajo con MatLab 7.0
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Fundamentos de programación
Tema 6 Clasificación de algoritmos
FUNCIÓN LÓGICAS Función FALSO() Devuelve el valor lógico Falso.
Metodología de la Programación
Ing. Francisco Rodríguez
Bucles y estructuras de decisión
Estructuras de Control
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de emparejamiento es clave principal, pues en este caso, Cuando una.
Características Objeto Relacionales en Oracle
Informática Ingeniería en Electrónica y Automática Industrial
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
If… then Visual basic.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Funciones Subprogramas definidos por el usuario Subprogrmas.
Tema 8. Estructuras de decisión. Clases 1 y 2.
Macros EN EXCEL.
Transcripción de la presentación:

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

Procedimientos Almacenados Base de Datos Tema 9: Procedimientos Almacenados (Stored Procedures)

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

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-

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

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

Creación de Stored Procedures CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure

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

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

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

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 declare @max_sales int, @half_max real select @max_sales = max(total_sales) from titles select @half_max = @max_sales / 2 select title, total_sales from titles where total_sales < @half_max update titles set price = price * $0.95 return

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

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

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 COD_ART=@CC EXEC SP_CONSULTA ‘254’

El control de flujo en Transact-SQL

Usando Parámetros de entrada

Usando Parámetros de entrada

Ejemplo

Usando Parámetros de salida

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 SELECT @NART=(SELECT COUNT(*) FROM ARTICULO) RETURN(0)

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: DECLARE @N INT EXEC SP_CUENTA_ARTICULOS @N OUTPUT SELECT NART=@N

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

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

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.

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<’1-01-1970’ 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<’1-01-1970’ THEN IF apellido =‘Martínez’ THEN -- IF ANIDADO END IF; -- END IF OBLIGATORIO

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<’1-01-1970’ 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 .

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

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.

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;

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;

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;

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;

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.

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;

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.

Estructuras de Control 3) Estructuras de BUCLE C) Bucles FOR EJEMPLO: BEGIN FOR V_Contador IN 1..10 LOOP INSERT INTO Tabla (Valor) VALUES (V_Contador); END LOOP; END;

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;

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.

FIN