3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Acceso a Bases de Datos con Java
DECLARE CURSOR cur1 IS SELECT dnombre, loc FROM DEPART; v_nombre DEPART.DNOMBRE%TYPE; v_localidad DEPART.LOC%TYPE; BEGIN OPEN cur1; LOOP FETCH cur1 INTO.
SQL Sigla del nombre “Structured Query Language”.
Base de Datos Orientada a Objetos (OODBMS)
Introducción a Transact-SQL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Acceso a bases de datos MySQL en PHP
Desarrollo de Aplicaciones para Internet
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Data set Data table Base de datos con servidor de base de datos String conexión Objeto conexión.
ACCESO A BASES DE DATOS ORACLE CON PHP
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Cursores Implícitos y Explícitos
Diseño Físico Procedimientos Almacenados y Disparadores (Triggers)
PL/SQL Francisco Moreno Universidad Nacional.
CURSORES Preparó: Ismael Castañeda Fuentes Fuentes: Manuales Sybase
MySQL M.C. Pedro Bello López.
1 BD Activas: Motivación zLos SGBD convencionales son “pasivos”. Sólo ejecutan preguntas o transacciones realizadas por los usuarios o por los programas.
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.
Bases de Datos Relacionales
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
Universidad del Cauca – FIET – Departamento de Sistemas
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
Procedimientos Almacenados Funciones Agregadas
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
UNITA - IBARRA TRIGGERS
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Elaborado por: Guillermo Baquerizo I Término 2012.
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Sesión 9 Construcción de cursores.
Triggers(Disparadores)
Visión General de PL/SQL
LENGUAJE SQL.
Cursores SQL RECORRER CON UN CONJUNTO DE RESULTADOS RECORRER CON UN CONJUNTO DE RESULTADOS.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
LENGUAJE ESTRUCTURADO DE CONSULTAS
SQL Sigla del nombre “Structured Query Language”.
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
PUESTO-TRABAJO (Código-Puesto, Empresa, Sueldo, DNI- Contratado) TITULADO (DNI-Titulado, Nombre, Apellidos, Dirección) TITULACION (Iden-Titulación, Nombre,
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
Estructuras de Control
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Después de completar esta lección, debe ser capaz de:  Crear registro definidos por el usuario.  Crear un registro con el atributo %ROWTYPE.  Crear.
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.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I PL/SQL.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
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.
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
4 Excepciones 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.
Diapositivas PLSQL ORACLE – Semana 2 Especialización en Desarrollo de soluciones Informáticas Universidad del Cauca Miguel Ángel Niño Zambrano.
6 Triggers 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.
6 Copyright © 2004, Oracle. Todos los derechos reservados. Trabajar con Tipos de Dato Compuestos.
6 Triggers ORACLE - III Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
PL/SQL Francisco Moreno Universidad Nacional.
Transcripción de la presentación:

3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega

1-2 Definición(1) El servidor Oracle usa área de trabajo llamadas Areas SQL privadas para ejecutar las sentencias SQL y almacenar la información procesada. Es posible usar cursores para nombrar un área privada y consultar su información.El servidor Oracle usa área de trabajo llamadas Areas SQL privadas para ejecutar las sentencias SQL y almacenar la información procesada. Es posible usar cursores para nombrar un área privada y consultar su información.

1-3 Definición (2) Todas las sentencias SQL ejecutadas por el servidor de Oracle tienen un cursor individual asociado:Todas las sentencias SQL ejecutadas por el servidor de Oracle tienen un cursor individual asociado: Cursores implícitos: Se declaran y se gestionan por PL/SQL para todas las sentencias SELECT DML y PL/SQL Cursores explícitos: Se declaran y se gestionan por el programador Todas las sentencias SQL ejecutadas por el servidor de Oracle tienen un cursor individual asociado:Todas las sentencias SQL ejecutadas por el servidor de Oracle tienen un cursor individual asociado: Cursores implícitos: Se declaran y se gestionan por PL/SQL para todas las sentencias SELECT DML y PL/SQL Cursores explícitos: Se declaran y se gestionan por el programador

1-4 Cursores implícitos - Atributos Retornan información de la ejecución de instrucciones INSERT, UPDATE, DELETE, SELECT INTO, COMMIT, or ROLLBACK %FOUND : La instrucción DML cambió filas?%FOUND : La instrucción DML cambió filas? %NOTFOUND : La instrucción DML falló al cambiar filas?%NOTFOUND : La instrucción DML falló al cambiar filas? %ROWCOUNT: Cúantas filas se cambiaron?%ROWCOUNT: Cúantas filas se cambiaron? Retornan información de la ejecución de instrucciones INSERT, UPDATE, DELETE, SELECT INTO, COMMIT, or ROLLBACK %FOUND : La instrucción DML cambió filas?%FOUND : La instrucción DML cambió filas? %NOTFOUND : La instrucción DML falló al cambiar filas?%NOTFOUND : La instrucción DML falló al cambiar filas? %ROWCOUNT: Cúantas filas se cambiaron?%ROWCOUNT: Cúantas filas se cambiaron? BEGIN UPDATE ESTUDIANTE SET programa_id = 1 where programa_id IS NULL; DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' Estudiantes actualizados '); END; BEGIN UPDATE ESTUDIANTE SET programa_id = 1 where programa_id IS NULL; DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ' Estudiantes actualizados '); END;

1-5 Control de cursores explícitos Declarar DECLAREDECLARE Abrir el cursor OPENOPEN Recuperar datos del cursor, fila a fila FETCHFETCH Comprueb a si hay registros EMPTY? Devuelve el control a FECH si encuentra registros No Cierra el cursor CLOSECLOSE Yes

1-6 Control de cursores explícitos Abrir cursor Cursor Puntero Cursor Continuar hasta que quede vacío Cursor Puntero Cerrar el cursor

1-7 Definición del cursor Se deben definir en la sección de definición de variables y tipos del bloqueSe deben definir en la sección de definición de variables y tipos del bloque Es posible usar variables en el whereEs posible usar variables en el where Se deben definir en la sección de definición de variables y tipos del bloqueSe deben definir en la sección de definición de variables y tipos del bloque Es posible usar variables en el whereEs posible usar variables en el where Ej. CURSOR nombre_cursor IS select …; Ej. CURSOR nombre_cursor IS select …;

1-8 Definición del cursor EjemploEjemplo Ej. DECLARE CURSOR cur_estudiantes IS select codigo, nombre from ESTUDIANTE where programa_id = 5 ; CURSOR cur_programas IS select nombre from PROGRAMA order by nombre; BEGIN … Ej. DECLARE CURSOR cur_estudiantes IS select codigo, nombre from ESTUDIANTE where programa_id = 5 ; CURSOR cur_programas IS select nombre from PROGRAMA order by nombre; BEGIN …

1-9 Recuperación de datos... OPEN cursor_nombre; LOOP FETCH cursor_nombre INTO variables EXIT WHEN...; -- ej. cursor vacío Procesar los datos … END LOOP; CLOSE cursor_nombre END;... OPEN cursor_nombre; LOOP FETCH cursor_nombre INTO variables EXIT WHEN...; -- ej. cursor vacío Procesar los datos … END LOOP; CLOSE cursor_nombre END; FETCH cursor_nombre INTO v_est_codigo, v_est_nombre; FETCH cursor_nombre INTO v_registro_est;

1-10 Usar el LOOP básico EjemploEjemplo DECLARE CURSOR cur_est IS SELECT codigo, promedio FROM ESTUDIANTE; v_reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est; LOOP FETCH cur_est INTO v_reg_est; EXIT WHEN cur_est%NOTFOUND; IF v_reg_est.promedio < 3 THEN dbms_output.put_line(v_reg_est.codigo||‘Reprobado’); END IF; END LOOP; CLOSE cur_est; END; / DECLARE CURSOR cur_est IS SELECT codigo, promedio FROM ESTUDIANTE; v_reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est; LOOP FETCH cur_est INTO v_reg_est; EXIT WHEN cur_est%NOTFOUND; IF v_reg_est.promedio < 3 THEN dbms_output.put_line(v_reg_est.codigo||‘Reprobado’); END IF; END LOOP; CLOSE cur_est; END; /

1-11 Usar el FOR cursor Facilita el procesamiento de cursores explícitos Facilita el procesamiento de cursores explícitos Apertura, recuperación y cierre implícitos Apertura, recuperación y cierre implícitos No declarar la variable registro, se declara implícitamente No declarar la variable registro, se declara implícitamente Facilita el procesamiento de cursores explícitos Facilita el procesamiento de cursores explícitos Apertura, recuperación y cierre implícitos Apertura, recuperación y cierre implícitos No declarar la variable registro, se declara implícitamente No declarar la variable registro, se declara implícitamente FOR registro_nombre IN cursor_nombre LOOP sentencia1; sentencia2;... END LOOP; FOR registro_nombre IN cursor_nombre LOOP sentencia1; sentencia2;... END LOOP;

1-12 Usar el FOR cursor EjemploEjemplo DECLARE CURSOR cur_est IS SELECT codigo, promedio FROM ESTUDIANTE; BEGIN FOR reg_est IN cur_est LOOP IF reg_est.promedio < 3 THEN dbms_output.put_line(v_reg_est.codigo||‘Reprobado’); END IF; END LOOP; END; / DECLARE CURSOR cur_est IS SELECT codigo, promedio FROM ESTUDIANTE; BEGIN FOR reg_est IN cur_est LOOP IF reg_est.promedio < 3 THEN dbms_output.put_line(v_reg_est.codigo||‘Reprobado’); END IF; END LOOP; END; /

1-13 Ejercicio Muestre el código y promedio de todos los estudiantes. Si el promedio es menor a 3 se imprime (‘Reprobado’) si es mayor o igual a 3 se imprime (‘Aprobado’)Muestre el código y promedio de todos los estudiantes. Si el promedio es menor a 3 se imprime (‘Reprobado’) si es mayor o igual a 3 se imprime (‘Aprobado’) Use un LOOP básico Use un FOR Cursor Muestre el código y promedio de todos los estudiantes. Si el promedio es menor a 3 se imprime (‘Reprobado’) si es mayor o igual a 3 se imprime (‘Aprobado’)Muestre el código y promedio de todos los estudiantes. Si el promedio es menor a 3 se imprime (‘Reprobado’) si es mayor o igual a 3 se imprime (‘Aprobado’) Use un LOOP básico Use un FOR Cursor

1-14 Atributos de cursores explícitos %FOUND: Se recuperó la siguiente fila?%FOUND: Se recuperó la siguiente fila? %ISOPEN: Está abierto?%ISOPEN: Está abierto? %NOTFOUND : Falló la recuperación de la siguiente fila?%NOTFOUND : Falló la recuperación de la siguiente fila? %ROWCOUNT : Cuantas filas se recuperaron?%ROWCOUNT : Cuantas filas se recuperaron? %FOUND: Se recuperó la siguiente fila?%FOUND: Se recuperó la siguiente fila? %ISOPEN: Está abierto?%ISOPEN: Está abierto? %NOTFOUND : Falló la recuperación de la siguiente fila?%NOTFOUND : Falló la recuperación de la siguiente fila? %ROWCOUNT : Cuantas filas se recuperaron?%ROWCOUNT : Cuantas filas se recuperaron?

1-15 Atributos de cursores explícitos EjemploEjemplo SET SERVEROUTPUT ON; DECLARE CURSOR cur_est IS SELECT codigo, nombre FROM ESTUDIANTE; reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est; LOOP FETCH cur_est INTO reg_est; EXIT WHEN cur_est%NOTFOUND OR cur_est%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_est%ROWCOUNT || ' - ' || reg_est.nombre); END LOOP; CLOSE cur_est; END; SET SERVEROUTPUT ON; DECLARE CURSOR cur_est IS SELECT codigo, nombre FROM ESTUDIANTE; reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est; LOOP FETCH cur_est INTO reg_est; EXIT WHEN cur_est%NOTFOUND OR cur_est%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_est%ROWCOUNT || ' - ' || reg_est.nombre); END LOOP; CLOSE cur_est; END; 1 – José 2 – Sara 3 - Pedro 1 – José 2 – Sara 3 - Pedro

1-16 Cursores con parámetros SET SERVEROUTPUT ON; DECLARE CURSOR cur_est (p_id_pro PROGRAMA.programa_id%TYPE) IS SELECT codigo, nombre FROM ESTUDIANTE WHERE programa_id = p_id_pro; reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est(2); LOOP FETCH cur_est INTO reg_est; EXIT WHEN cur_est%NOTFOUND OR cur_est%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_est%ROWCOUNT || ' - ' || reg_est.nombre); END LOOP; CLOSE cur_est; END; SET SERVEROUTPUT ON; DECLARE CURSOR cur_est (p_id_pro PROGRAMA.programa_id%TYPE) IS SELECT codigo, nombre FROM ESTUDIANTE WHERE programa_id = p_id_pro; reg_est cur_est%ROWTYPE; BEGIN OPEN cur_est(2); LOOP FETCH cur_est INTO reg_est; EXIT WHEN cur_est%NOTFOUND OR cur_est%NOTFOUND IS NULL; DBMS_OUTPUT.PUT_LINE(cur_est%ROWCOUNT || ' - ' || reg_est.nombre); END LOOP; CLOSE cur_est; END;

1-17 Bibliografía Oracle® Database PL/SQL Language Reference -11g Release 1 (11.1) Oracle® Database PL/SQL Language Reference -11g Release 1 (11.1)