SlideShare una empresa de Scribd logo
1 de 17
Cursores Implícitos y
     Explícitos
      Semana 4/1
Aprendizajes esperados

• Discernir cuando usar un procedimientos
  almacenados, trigger de base de datos, cursor y
  función para implementar una solución a la
  lógica de negocio recogida en la captura de
  requerimientos de un sistema
Conceptos Claves
• Son utilizados para gestionar los resultados de una
  sentencia SELECT
• En el fondo, un cursor permite gestionar un conjunto de
  registros, recorriendo dicho conjunto y con acceso a sus
  datos
• Específicamente:
  • Cursor Implícito: No es necesario declararlo. La operación
    SELECT INTO es un ejemplo
  • Cursor Explícito: Se necesita declararlo en el código
Cursor Implícito
• Un cursor implícito es aquel que devuelve una única fila como dato. La
  sentencia SELECT – INTO es un ejemplo de cursor implícito
• El cursor implícito debe retornar siempre una fila o registro. Si esa
  condición no se cumple, se producirá un error (excepción)
• Las excepciones que se pueden producir son:
  • NO DATA FOUND: No se encontró fila o registro que satisfaga el SELECT
    utilizado
  • TOO MANY ROWS: El SELECT devuelve más de una fila o registro
Ejemplo cursor implícito
Ejemplo error cursor implícito


                      El cursor devuelve
                      más de una fila (TOO
                      MANY ROWS)
Cursor Explícito
• Un cursor explícito puede devolver cero o más filas.
• Generalmente, un cursor explícito pasa por las
  siguientes etapas:
  •   Declaración (CURSOR)
  •   Apertura (OPEN)
  •   Extracción (FETCH)
  •   Cierre (CLOSE)
Sintaxis
• Para declarar un cursor:
  • Simple:
  • CURSOR <nombre_cursor> IS <instrucción select>
  • Con parámetros:
  • CURSOR <nombre_cursor> (param1 tipo1, param2
    tipo2, ……, param n tipo n) IS <instrucción select>
Sintaxis
• Para abrir un cursor:
  • Simple:
  • OPEN nombre_cursor;
  • Con parámetros:
  • OPEN nombre_cursor (valor1, valor2, …., valor n);
Sintaxis
• Para extraer datos de un cursor:
  • Con variables:
  • FETCH nombre_cursor INTO lista_variables;
  • Con registro PL/SQL:
  • FETCH nombre_cursor INTO registro_PL/SQL;
Sintaxis
• Para cerrar un cursor:
  • CLOSE nombre_cursor;
Atributos Cursores
• Con los atributos de los cursores se permite reconocer el estado de un
  cursor
• %NOTFOUND: Devuelve verdadero cuando el cursor no retorna un registro
• %FOUND: Devuelve verdadero cuando el cursor retorna un registro
• %ISOPEN: Devuelve verdadero mientras el cursor esté abierto
• %ROWCOUNT: Devuelve la cantidad de registros que se ha recuperado
  hasta el momento
Ejemplo Cursor Explícito
Consideraciones
• Cuando un cursor está cerrado, no puede retornar registros y en general, los
  atributos tampoco pueden ser utilizados (excepto %ISOPEN)
• No se puede cerrar un cursor que ya está cerrado
• Es conveniente consultar el resultado de una extracción mediante los atributos del
  cursor (%NOTFOUND, %FOUND)
• Al terminar de usar un cursor, es recomendable cerrarlo para liberar espacio de
  memoria y dejarlo disponible para el SGBD
Otras formas de cursores
               explícitos
• Se puede utilizar una estructura de ciclo FOR, para recorrer
  el resultado de un cursor
• De la forma anterior, se ejecutan implícitamente las
  instrucciones OPEN, FETCH y CLOSE
• Uno de los puntos en contra respecto a esta modalidad, es
  que el cursor no tiene nombre, y por lo tanto, su resultado
  no puede ser capturado por una aplicación externa a Oracle
  para el uso de sus datos (ej. .NET, Java)
Ejemplo de otras formas de
    cursores explícitos
Ejemplo de otras formas de
    cursores explícitos

Más contenido relacionado

La actualidad más candente

Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)josecuartas
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?Software Guru
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de DatosRenny Batista
 
Analisis estructurado
Analisis estructuradoAnalisis estructurado
Analisis estructuradokvillazon
 
Middleware en los sistemas distribuidos
Middleware en los sistemas distribuidosMiddleware en los sistemas distribuidos
Middleware en los sistemas distribuidosJC Alca Arequi
 
Disponibilidad de datos
Disponibilidad de datosDisponibilidad de datos
Disponibilidad de datosUTN
 
Diseño detallado
Diseño detalladoDiseño detallado
Diseño detalladojose
 
Cuadro comparativo s.o
Cuadro  comparativo s.oCuadro  comparativo s.o
Cuadro comparativo s.oriosofelia
 
Interbloqueo sistemas operativos
Interbloqueo  sistemas operativosInterbloqueo  sistemas operativos
Interbloqueo sistemas operativosAndy Lopez
 
Instalacion y configuracion de un servidor dhcp en linux
Instalacion y configuracion de un servidor dhcp en linuxInstalacion y configuracion de un servidor dhcp en linux
Instalacion y configuracion de un servidor dhcp en linuxvictorcorreas
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSxinithazangels
 

La actualidad más candente (20)

Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)Patrones de arquitectura Software(Capa de Datos)
Patrones de arquitectura Software(Capa de Datos)
 
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
¿Cómo realizar entrevistas eficaces para obtener requisitos de software?
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Analisis estructurado
Analisis estructuradoAnalisis estructurado
Analisis estructurado
 
Tutorial de MySQL
Tutorial de MySQLTutorial de MySQL
Tutorial de MySQL
 
8.realizacion de pruebas
8.realizacion de pruebas8.realizacion de pruebas
8.realizacion de pruebas
 
Middleware en los sistemas distribuidos
Middleware en los sistemas distribuidosMiddleware en los sistemas distribuidos
Middleware en los sistemas distribuidos
 
Prolog
Prolog Prolog
Prolog
 
Disponibilidad de datos
Disponibilidad de datosDisponibilidad de datos
Disponibilidad de datos
 
Diseño detallado
Diseño detalladoDiseño detallado
Diseño detallado
 
Cuadro comparativo s.o
Cuadro  comparativo s.oCuadro  comparativo s.o
Cuadro comparativo s.o
 
Diagramas uml
Diagramas umlDiagramas uml
Diagramas uml
 
Documentacion rup
Documentacion rupDocumentacion rup
Documentacion rup
 
Interbloqueo sistemas operativos
Interbloqueo  sistemas operativosInterbloqueo  sistemas operativos
Interbloqueo sistemas operativos
 
Instalacion y configuracion de un servidor dhcp en linux
Instalacion y configuracion de un servidor dhcp en linuxInstalacion y configuracion de un servidor dhcp en linux
Instalacion y configuracion de un servidor dhcp en linux
 
Modelo TSP
Modelo TSPModelo TSP
Modelo TSP
 
Pt7seccion2
Pt7seccion2Pt7seccion2
Pt7seccion2
 
PAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIAPAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIA
 
TAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOSTAREAS DE LA ING. DE REQUISITOS
TAREAS DE LA ING. DE REQUISITOS
 

Destacado

Cibertec-cursores
Cibertec-cursoresCibertec-cursores
Cibertec-cursoresjthomburne
 
Programación c
Programación cProgramación c
Programación cvictdiazm
 
Programación III. Nieva. Clase 3, segunda parte.
Programación III. Nieva. Clase 3, segunda parte.Programación III. Nieva. Clase 3, segunda parte.
Programación III. Nieva. Clase 3, segunda parte.MultimediaUNLaR
 
Gabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida públicaGabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida públicaColectivo Toleranciaydemocracia
 
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiada
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiadaTeología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiada
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiadaColectivo Toleranciaydemocracia
 
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de Elecciones
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de EleccionesDr. Hugo Sivina Hurtado / Presidente Jurado Nacional de Elecciones
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de EleccionesColectivo Toleranciaydemocracia
 
Foristeria conchi
Foristeria  conchiForisteria  conchi
Foristeria conchiConchi2013
 
C como podemos saber si la biblia es de dios part 2 by eliud gamez
C como podemos saber si la biblia es de dios part 2 by eliud gamezC como podemos saber si la biblia es de dios part 2 by eliud gamez
C como podemos saber si la biblia es de dios part 2 by eliud gamezEliud Gamez Gomez
 
Java2 curso de programación fco manuel ceballo
Java2 curso de programación fco manuel ceballoJava2 curso de programación fco manuel ceballo
Java2 curso de programación fco manuel ceballovictdiazm
 
Exploration network chapter6
Exploration network chapter6Exploration network chapter6
Exploration network chapter6victdiazm
 
Abf leccion 03
Abf leccion 03Abf leccion 03
Abf leccion 03victdiazm
 
Mi diapositiva
Mi diapositivaMi diapositiva
Mi diapositivaedgar9854
 
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...Rachel Palmen
 
Animales en extinción
Animales en extinciónAnimales en extinción
Animales en extinciónClaudio Ogaz
 
Como representa información un computador daniela angelica
Como representa información un computador daniela angelicaComo representa información un computador daniela angelica
Como representa información un computador daniela angelica951118
 

Destacado (20)

Cibertec-cursores
Cibertec-cursoresCibertec-cursores
Cibertec-cursores
 
Programación c
Programación cProgramación c
Programación c
 
Programación III. Nieva. Clase 3, segunda parte.
Programación III. Nieva. Clase 3, segunda parte.Programación III. Nieva. Clase 3, segunda parte.
Programación III. Nieva. Clase 3, segunda parte.
 
Gabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida públicaGabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida pública
 
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiada
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiadaTeología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiada
Teología de la Liberación : Ayer maldita y perseguida, hoy bendita y elogiada
 
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de Elecciones
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de EleccionesDr. Hugo Sivina Hurtado / Presidente Jurado Nacional de Elecciones
Dr. Hugo Sivina Hurtado / Presidente Jurado Nacional de Elecciones
 
Foristeria conchi
Foristeria  conchiForisteria  conchi
Foristeria conchi
 
C como podemos saber si la biblia es de dios part 2 by eliud gamez
C como podemos saber si la biblia es de dios part 2 by eliud gamezC como podemos saber si la biblia es de dios part 2 by eliud gamez
C como podemos saber si la biblia es de dios part 2 by eliud gamez
 
Java2 curso de programación fco manuel ceballo
Java2 curso de programación fco manuel ceballoJava2 curso de programación fco manuel ceballo
Java2 curso de programación fco manuel ceballo
 
753
753753
753
 
Arcangel isabela r s
Arcangel isabela r sArcangel isabela r s
Arcangel isabela r s
 
Exploration network chapter6
Exploration network chapter6Exploration network chapter6
Exploration network chapter6
 
Exposicion castellano
Exposicion castellanoExposicion castellano
Exposicion castellano
 
643
643643
643
 
Abf leccion 03
Abf leccion 03Abf leccion 03
Abf leccion 03
 
Mi diapositiva
Mi diapositivaMi diapositiva
Mi diapositiva
 
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...
Guia practica para_la_inclusion_de_la_perspectiva_de_genero_en_las_investigac...
 
Animales en extinción
Animales en extinciónAnimales en extinción
Animales en extinción
 
Como representa información un computador daniela angelica
Como representa información un computador daniela angelicaComo representa información un computador daniela angelica
Como representa información un computador daniela angelica
 
Banco de científicos colombianos
Banco de científicos  colombianosBanco de científicos  colombianos
Banco de científicos colombianos
 

Similar a Semana 5 y 6 cursores implícitos y explícitos

Similar a Semana 5 y 6 cursores implícitos y explícitos (20)

Pl
PlPl
Pl
 
1 clase de Ps /sql
    1  clase  de  Ps /sql     1  clase  de  Ps /sql
1 clase de Ps /sql
 
Semana 3 estructuras de control
Semana 3 estructuras de controlSemana 3 estructuras de control
Semana 3 estructuras de control
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
PLSQL y paquetes
PLSQL y paquetesPLSQL y paquetes
PLSQL y paquetes
 
Apunte plsql
Apunte plsqlApunte plsql
Apunte plsql
 
13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docx13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docx
 
13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docx13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docx
 
Pl Sql
Pl SqlPl Sql
Pl Sql
 
Conceptos basicos de programacion con pl sql
Conceptos basicos de programacion con pl sqlConceptos basicos de programacion con pl sql
Conceptos basicos de programacion con pl sql
 
Plsql y paquetes
Plsql y paquetesPlsql y paquetes
Plsql y paquetes
 
Tsql
TsqlTsql
Tsql
 
SESION-07.pptx
SESION-07.pptxSESION-07.pptx
SESION-07.pptx
 
Tercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corteTercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corte
 
Migracion de datos
Migracion de datosMigracion de datos
Migracion de datos
 
Fundamentos sql
Fundamentos sqlFundamentos sql
Fundamentos sql
 
Sentencias
SentenciasSentencias
Sentencias
 
Tsql
TsqlTsql
Tsql
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 
Sql
SqlSql
Sql
 

Más de victdiazm

Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsvictdiazm
 
Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resueltavictdiazm
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resueltavictdiazm
 
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resueltavictdiazm
 
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3   file ownerships and permissions guia de ejercicios resueltaSemana 2 y 3   file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3 file ownerships and permissions guia de ejercicios resueltavictdiazm
 
Semana 1 quick tours guia de ejercicios resuelta
Semana 1   quick tours guia de ejercicios resueltaSemana 1   quick tours guia de ejercicios resuelta
Semana 1 quick tours guia de ejercicios resueltavictdiazm
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltavictdiazm
 
Semana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bashSemana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bashvictdiazm
 
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsvictdiazm
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltavictdiazm
 
Semana 1 -_quick_tours
Semana 1 -_quick_toursSemana 1 -_quick_tours
Semana 1 -_quick_toursvictdiazm
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y gruposvictdiazm
 
Semana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redesSemana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redesvictdiazm
 
Semana 12 filesystem basico
Semana 12  filesystem basicoSemana 12  filesystem basico
Semana 12 filesystem basicovictdiazm
 
Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesosvictdiazm
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesvictdiazm
 
Semana 8 herramientas de procesos de string
Semana 8  herramientas de procesos de stringSemana 8  herramientas de procesos de string
Semana 8 herramientas de procesos de stringvictdiazm
 
Semana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linuxSemana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linuxvictdiazm
 
Control1 victoria diaz
Control1   victoria diazControl1   victoria diaz
Control1 victoria diazvictdiazm
 

Más de victdiazm (20)

Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
 
Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resuelta
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
 
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resuelta
 
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3   file ownerships and permissions guia de ejercicios resueltaSemana 2 y 3   file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
 
Semana 1 quick tours guia de ejercicios resuelta
Semana 1   quick tours guia de ejercicios resueltaSemana 1   quick tours guia de ejercicios resuelta
Semana 1 quick tours guia de ejercicios resuelta
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
 
Semana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bashSemana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bash
 
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
 
Semana 1 -_quick_tours
Semana 1 -_quick_toursSemana 1 -_quick_tours
Semana 1 -_quick_tours
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y grupos
 
Semana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redesSemana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redes
 
Semana 12 filesystem basico
Semana 12  filesystem basicoSemana 12  filesystem basico
Semana 12 filesystem basico
 
Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesos
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
 
Semana 8 herramientas de procesos de string
Semana 8  herramientas de procesos de stringSemana 8  herramientas de procesos de string
Semana 8 herramientas de procesos de string
 
Semana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linuxSemana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linux
 
Script
ScriptScript
Script
 
Control1 victoria diaz
Control1   victoria diazControl1   victoria diaz
Control1 victoria diaz
 

Semana 5 y 6 cursores implícitos y explícitos

  • 1. Cursores Implícitos y Explícitos Semana 4/1
  • 2. Aprendizajes esperados • Discernir cuando usar un procedimientos almacenados, trigger de base de datos, cursor y función para implementar una solución a la lógica de negocio recogida en la captura de requerimientos de un sistema
  • 3. Conceptos Claves • Son utilizados para gestionar los resultados de una sentencia SELECT • En el fondo, un cursor permite gestionar un conjunto de registros, recorriendo dicho conjunto y con acceso a sus datos • Específicamente: • Cursor Implícito: No es necesario declararlo. La operación SELECT INTO es un ejemplo • Cursor Explícito: Se necesita declararlo en el código
  • 4. Cursor Implícito • Un cursor implícito es aquel que devuelve una única fila como dato. La sentencia SELECT – INTO es un ejemplo de cursor implícito • El cursor implícito debe retornar siempre una fila o registro. Si esa condición no se cumple, se producirá un error (excepción) • Las excepciones que se pueden producir son: • NO DATA FOUND: No se encontró fila o registro que satisfaga el SELECT utilizado • TOO MANY ROWS: El SELECT devuelve más de una fila o registro
  • 6. Ejemplo error cursor implícito El cursor devuelve más de una fila (TOO MANY ROWS)
  • 7. Cursor Explícito • Un cursor explícito puede devolver cero o más filas. • Generalmente, un cursor explícito pasa por las siguientes etapas: • Declaración (CURSOR) • Apertura (OPEN) • Extracción (FETCH) • Cierre (CLOSE)
  • 8. Sintaxis • Para declarar un cursor: • Simple: • CURSOR <nombre_cursor> IS <instrucción select> • Con parámetros: • CURSOR <nombre_cursor> (param1 tipo1, param2 tipo2, ……, param n tipo n) IS <instrucción select>
  • 9. Sintaxis • Para abrir un cursor: • Simple: • OPEN nombre_cursor; • Con parámetros: • OPEN nombre_cursor (valor1, valor2, …., valor n);
  • 10. Sintaxis • Para extraer datos de un cursor: • Con variables: • FETCH nombre_cursor INTO lista_variables; • Con registro PL/SQL: • FETCH nombre_cursor INTO registro_PL/SQL;
  • 11. Sintaxis • Para cerrar un cursor: • CLOSE nombre_cursor;
  • 12. Atributos Cursores • Con los atributos de los cursores se permite reconocer el estado de un cursor • %NOTFOUND: Devuelve verdadero cuando el cursor no retorna un registro • %FOUND: Devuelve verdadero cuando el cursor retorna un registro • %ISOPEN: Devuelve verdadero mientras el cursor esté abierto • %ROWCOUNT: Devuelve la cantidad de registros que se ha recuperado hasta el momento
  • 14. Consideraciones • Cuando un cursor está cerrado, no puede retornar registros y en general, los atributos tampoco pueden ser utilizados (excepto %ISOPEN) • No se puede cerrar un cursor que ya está cerrado • Es conveniente consultar el resultado de una extracción mediante los atributos del cursor (%NOTFOUND, %FOUND) • Al terminar de usar un cursor, es recomendable cerrarlo para liberar espacio de memoria y dejarlo disponible para el SGBD
  • 15. Otras formas de cursores explícitos • Se puede utilizar una estructura de ciclo FOR, para recorrer el resultado de un cursor • De la forma anterior, se ejecutan implícitamente las instrucciones OPEN, FETCH y CLOSE • Uno de los puntos en contra respecto a esta modalidad, es que el cursor no tiene nombre, y por lo tanto, su resultado no puede ser capturado por una aplicación externa a Oracle para el uso de sus datos (ej. .NET, Java)
  • 16. Ejemplo de otras formas de cursores explícitos
  • 17. Ejemplo de otras formas de cursores explícitos