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.

Slides:



Advertisements
Presentaciones similares
SQL Y BASES DE DATOS A TRAVÉS DE LA WEB
Advertisements

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.
integridad referencial
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Desarrollo de Aplicaciones para Internet
Consultas anidadas.
ACCESO A BASES DE DATOS ORACLE CON PHP
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Cursores Implícitos y Explícitos
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
CURSORES Preparó: Ismael Castañeda Fuentes Fuentes: Manuales Sybase
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.
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Ing. Ricardo Carlos Inquilla Quispe
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.
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 6 Subconsultas.
COMANDOS SQL.
PL/SQL Francisco Moreno Universidad Nacional.
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Elaborado por: Guillermo Baquerizo I Término 2012.
Sesión 9 Construcción de cursores.
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Ciclo de vida y operaciones masivas Conceptos básicos.
Triggers(Disparadores)
CONSULTAS SENCILLAS A LA BASE DE DATOS
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Consultas SQL (Base de Datos)
INSTRUCCIONES Elaboración de la Presentación:
LENGUAJE SQL.
Bases de Datos Sql.
Cursores SQL RECORRER CON UN CONJUNTO DE RESULTADOS RECORRER CON UN CONJUNTO DE RESULTADOS.
LENGUAJE ESTRUCTURADO DE CONSULTAS
COMANDOS DML DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio,
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.
 La sentencia SELECT recupera todas las columnas o un subconjunto de ellas de una tabla. Esto afecta a todas las filas de la tabla, a menos que especifiquemos.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
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…);
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
Estructuras de Control
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo SQL en PL/SQL Conceptos básicos.
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.
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.
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,
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
DLM Transact SQL Sesión II Recuperación de información.
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.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
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.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
DML Transact SQL Sesión III Agrupando y resumiendo información.
Copyright  Oracle Corporation, All rights reserved. 6 Subconsultas.
DAI - Ing. Arturo Rozas Huacho Tablas Cruzadas Sistemas de Base de Datos Para entender el concepto de tablas cruzadas, veamos el siguiente ejemplo:
PL/SQL Francisco Moreno Universidad Nacional.
Transcripción de la presentació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 tipos:  Cursores Implícitos: Declarados por todas las instrucciones DML y por la instrucción SELECT y controlados por el Oracle Server  Cursores Explícitos: Declarados y controlados por el programador, usados para manejar consultas que retornan mas de una fila Cursores en PL/SQL

Base de Datos I – PL/SQL Cursor Implícito Hay cuatro atributos asociados a los cursores implícitos que permiten controlar y verificar el resultado de su ejecución:

Base de Datos I – PL/SQL Cursor Implícito  Atributos de Cursores en PL/SQL:

Base de Datos I – PL/SQL Utilice cursores explícitos para procesar individualmente cada fila que se devuelve en una sentencia SELECT de múltiples filas. El conjunto de filas que devuelve una consulta de múltiples filas se denomina conjunto activo. Su tamaño equivale al número de filas que cumplen el criterio de búsqueda. El diagrama de la transparencia muestra cómo un cursor explícito “apunta” a la fila actual del conjunto activo. De esta manera, el programa puede procesar las filas de una en una.

Base de Datos I – PL/SQL Crea el área SQL con el nombre del cursor Extrae el conjunto de datos Lee la fila actual en las variables Chequea si hay datos en el cursor Recupera la fila actual Libera el área de datos usada por el cursor SI NO DECLARE VACI O OPEN FETCHCERRAR Control de Cursores Explícitos

Base de Datos I – PL/SQL cursor Puntero Apertura del cursor Recuperación de filas Continúa hasta que el cursor esté vacío Cierre del cursor Control de Cursores Explícitos

Base de Datos I – PL/SQL

 El cursor se abre para ejecutar el query e identificar el conjunto de filas que serán recuperadas  Si la consulta no retorna filas, no se levantan excepciones  Se pueden usar los atributos de cursor para chequear el estatus del cursor después de cada FECTH OPEN; OPEN nombre_cursor; Apertura del Cursor

Base de Datos I – PL/SQL

 Recupera la fila actual en las variables de salida  El número y tipo de las variables debe coincidir con el de las columnas recuperadas  Cada variable recibirá el valor correspondiente a la columna que le corresponde según la posición  Se debe chequear para verificar si el cursor contiene filas FETCHINTO FETCH nombre_cursor INTO [variable1 ; [,variable2,…] | nombre_registro]; Recuperación de Datos desde el Cursor

Base de Datos I – PL/SQL FETCHINTO; FETCH empleados INTO v_empno, v_nombre; … OPEN; OPEN cursor_definido; LOOP FETCHINTO; FETCH cursor_definido INTO variables; EXITWHEN; EXIT WHEN …; … -- Procesamiento de la fila de datos … ENDLOOP; END LOOP; END; Recuperación de Datos desde el Cursor

Base de Datos I – PL/SQL

Cierre del Cursor  El cursor se debe cerrar al terminar de cerrar el procesamiento de las filas  El cursor puede ser reabierto si es necesario  No intente recuperar una fila de datos una vez que el cursor haya sido cerrado CLOSE; CLOSE nombre_cursor; … FORINLOOP FOR i IN LOOP FETCHINTO; FETCH empleados INTO v_empno, v_nombre; … ENDLOOP; END LOOP; CLOSE; CLOSE empleados;

Base de Datos I – PL/SQL

 La recuperación de filas solo es posible cuando el cursor está abierto  El atributo %ISOPEN se usa para evitar tratar de recuperar una fila de datos cuando el cursor está cerrado IFNOT%ISOPENTHEN IF NOT empleados%ISOPEN THEN OPEN; OPEN empleados; ENDIF; END IF; LOOP FETCHINTO...; FETCH empleados INTO...; Atributo %ISOPEN

Base de Datos I – PL/SQL  El atributo %ROWCOUNT se usa para obtener el número de filas tratadas  El atributo %NOTFOUND se usa para determinar cuando salir del cursor... OPEN; OPEN empleados; LOOP FETCHINTO; FETCH empleados INTO...; EXITWHEN%ROWCOUNT> EXIT WHEN empleados%ROWCOUNT > 25 OR%NOTFOUND; OR empleados%NOTFOUND;... Los Atributos %NOTFOUND y %ROWCOUNT

Base de Datos I – PL/SQL

 Es la forma mas sencilla de procesar cursores explícitos  Los eventos OPEN, FETCH y CLOSE están implícitos  El registro también está declarado implícitamente FORINLOOP FOR reg_empleado IN nombre_cursor LOOP ; instrucciones; ENDLOOP; END LOOP; Ciclo FOR usado como Cursor

Base de Datos I – PL/SQL DECLARE CURSORIS CURSOR empleados IS SELECT SELECT empno, nombre FROM; FROM empleado; BEGIN FORINLOOP FOR reg_empleado IN empleados LOOP ; instrucciones; ENDLOOP; END LOOP; END; Ciclo FOR usado como Cursor

Base de Datos I – PL/SQL BEGIN FORINSELECT FOR reg_empleado IN (SELECT empno, nombre FROMLOOP FROM empleado) LOOP ; instrucciones; ENDLOOP; END LOOP; END;  En este caso no es necesario declarar el cursor Cursor FOR usado como Sub-Queries

Base de Datos I – PL/SQL  Los parámetros se evalúan cuando el cursor es abierto y el query es ejecutado  Se usan cuando se necesita abrir un cursor varias veces con valores distintos cada vez CURSOR CURSOR nombre_cursor [(nombre_parametro tipo, …)] IS SELECT; SELECT …; OPEN (valor_parametro, …) OPEN nombre_cursor (valor_parametro, …) IN nombre_parametro [IN] :=DEFAULT tipo_dato [{:= | DEFAULT} expresion] Cursores Con Parámetros

Base de Datos I – PL/SQL  Ejemplo: DECLARE CURSOR MICURSOR (SUELDO NUMBER) IS SELECT NOMBRE, OFICIO, SALARIO FROM EMPLEADO WHERE SALARIO > SUELDO; BEGIN OPEN MICURSOR (2000); (otras sentencias) OPEN MICURSOR (3000); END; / Cursores Con Parámetros

Base de Datos I – PL/SQL  Los cursores pueden ser utilizados para actualizar o borrar la fila actual  Incluya la cláusula FOR UPDATE en el SELECT del cursor para asegurar primero el bloqueo de las filas de datos  Use la cláusula WHERE CURRENT OF para referenciar la fila actual desde un cursor explícito. Esto sin necesidad de utilizar o referenciarlo por el ROWIND. WHERE CURRENT OF; WHERE CURRENT OF nombre_cursor; Cláusula WHERE CURRENT OF

Base de Datos I – PL/SQL  Ejemplo: Cláusula WHERE CURRENT OF DECLARE CURSOR CURSOR_EMP IS CURSOR CURSOR_EMP IS SELECT emp_no, nombre, salario, dnombre FROM empleados e, depart d WHERE e.dept_no = d.dept_no AND d.dept_no = 80 FOR UPDATE OF salario NOWAIT; BEGIN FOR registro_emp IN cursor_emp LOOP IF registro_emp.salario < 5000 THEN UPDATE empleados SET salario = registro_emp.salario*1.10 WHERE CURRENT OF cursor_emp; WHERE CURRENT OF cursor_emp; END IF; END LOOP; END; /

Base de Datos I – PL/SQL DECLARE DECLARE CURSOR IS CURSOR mixto IS SELECT SELECT t1.numdept, nombre, staff FROM FROM departamento t1, (SELECT, (SELECT numdept, count(*) staff FROM FROM empleado GROUP BY ) t2 GROUP BY numdept) t2 WHERE WHERE t1.numdept = t2.numdept AND ; AND staff > 1; Cursores con Sub-Queries

Base de Datos I – PL/SQL