0% encontró este documento útil (0 votos)
43 vistas46 páginas

PL - SQL - 2

Este documento presenta los contenidos de la segunda sesión de un curso sobre PL/SQL. Se revisan los tipos de datos compuestos en PL/SQL, incluyendo registros, colecciones (arrays de longitud variable y tablas anidadas) y cursores (implícitos y explícitos). También se introducen los cursores variables.

Cargado por

fpalacioschaves
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
43 vistas46 páginas

PL - SQL - 2

Este documento presenta los contenidos de la segunda sesión de un curso sobre PL/SQL. Se revisan los tipos de datos compuestos en PL/SQL, incluyendo registros, colecciones (arrays de longitud variable y tablas anidadas) y cursores (implícitos y explícitos). También se introducen los cursores variables.

Cargado por

fpalacioschaves
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

PL/SQL - Sesión 2

Antonio Manuel Durán Rosal


Profesor en prácticas del MUPES por la UCO
[email protected]

Desarrollo de Aplicaciones Web


I.E.S. Trassierra
2018/2019
Contenidos - Sesión 1

● Repaso SQL
● Introducción a PL/SQL
● Conceptos básicos
○ Unidades léxicas
○ Tipos de datos simples, variables y constantes
○ El bloque PL/SQL
○ Estructuras de control
○ Excepciones
Contenidos - Sesión 2

● Tipos de datos compuestos


○ Registros
○ Colecciones
○ Cursores
Contenidos - Sesión 3
● Abstracción en PL/SQL
○ Subprogramas
○ Paquetes
○ Objetos
● Disparadores
○ Definición
○ Ejemplos
● Interfaces
● Tutorial y ejercicios resueltos
3. Tipos de datos
compuestos
Tipos de datos compuestos

● Hasta ahora hemos visto los tipos de datos simples


● ¿Qué ocurre si queremos modelar un problema?
● Aparecen los llamados tipos de datos compuestos para sacarle el mayor
partido posible al lenguaje PL/SQL.
3.1. Registros
Registros

Un registro es un grupo de elementos relacionados almacenados en campos,


cada uno de los cuales tiene su propio nombre y tipo de dato.
Registros: declaración

No se puede usar el
tipo de dato REF
CURSOR
Registros: acceso a los campos
Registros: consideraciones

1. Mismo tipo
2. No se pueden comparar registros
3. No se pueden comprobar si son NULL
4. Se permiten SELECT pero no INSERT
Autoevaluación - Registros
App Kahoot!
3.2. Colecciones
Colecciones

Una colección es un grupo ordenado de elementos, todos del mismo tipo.


Cada elemento tiene un subíndice único que determina su posición en la
colección. Se distinguen:

● Arrays de longitud variable


● Tablas anidadas
3.2.1. Arrays de
longitud variable
Arrays de longitud variable

● Su tipo es VARRAY
● Son como arrays en cualquier otro lenguaje de programación
● Sólo tienen una dimensión
● A la hora de declararlos se declara su tipo máximo
● El array crece dinámicamente hasta alcanzar dicho tamaño
Arrays de longitud variable: declaración

entero positivo

constructores
Arrays de longitud variable: acceso
Arrays de longitud variable: asignación

mismo tipo
Arrays de longitud variable: extender
● EXTEND
● EXTEND(n)
● EXTEND(n,i)
● COUNT
● LIMIT
● FIRST
● LAST
● PRIOR
● NEXT
3.2.2. Tablas
anidadas
Tablas anidadas

● No tienen límite superior fijo


● Aumentan dinámicamente su tamaño
● Permiten borrar elementos individuales
Tablas anidadas: declaración
Tablas anidadas: acceso

IGUAL QUE LOS VARRAY


Tablas anidadas: algunas funciones
Tablas anidadas: ejemplo
Autoevaluación - Colecciones
App Kahoot!
3.3. Cursores
Cursores

● Un cursor no es más que una estructura que almacena el conjunto de filas


devuelto por una consulta a la base de datos.
● Existen cursores implícitos y explícitos
3.3.1. Cursores
implícitos
Cursores implícitos

● Oracle abre implícitamente un cursor para procesar cada sentencia SQL


que no esté asociada con un cursor declarado explícitamente.
● Con un cursor implícito no podemos usar las sentencias OPEN, FETCH y
CLOSE para controlar el cursor. Pero sí podemos usar los atributos del
cursor para obtener información sobre las sentencias SQL más
recientemente ejecutadas.
Cursores implícitos: atributos

● %FOUND : Después de que el cursor esté abierto y antes del primer


FETCH , %FOUND devuelve NULL . Después del primer FETCH , %FOUND
devolverá TRUE si el último FETCH ha devuelto una fila y FALSE en caso
contrario. Para cursores implícitos %FOUND devuelve TRUE si un INSERT ,
UPDATE o DELETE afectan a una o más de una fila, o un SELECT ... INTO ...
devuelve una o más filas. En otro caso %FOUND devuelve FALSE.
● %NOTFOUND : Es lógicamente lo contrario a %FOUND .
Cursores implícitos: atributos

● %ISOPEN : Evalúa a TRUE si el cursor está abierto y FALSE en caso


contrario. Para cursores implícitos, como Oracle los cierra
automáticamente, %ISOPEN evalúa siempre a FALSE .
● %ROWCOUNT : Para un cursor abierto y antes del primer FETCH ,
%ROWCOUNT evalúa a 0. Después de cada FETCH , %ROWCOUNT es
incrementado y evalúa al número de filas que hemos procesado. Para
cursores implícitos %ROWCOUNT evalúa al número de filas afectadas por
un INSERT , UPDATE o DELETE o el número de filas devueltas por un
SELECT ... INTO ...
3.3.2. Cursores
explícitos
Cursores explícitos

● Cuando una consulta devuelve más de una fila podemos gestionarlas con
un cursor declarado explícitamente.
Cursores explícitos: declaración

parámetro de entrada
Cursores explícitos: apertura (OPEN)
Cursores explícitos: recorrer filas (FETCH)
Cursores explícitos: cierre (CLOSE)

NOTA: Se puede volver a reabrir pero no realizar ninguna operación con el cursor.
Cursores explícitos: valor de los atributos
3.3.3. Cursores
variables
Cursores variables
● Oracle permite definir cursores variables, que son como punteros a
cursores.
● Son dinámicos y nos permiten referirnos a cualquier tipo de consulta.
Cursores variables: pasos para su uso
● Definir un tipo REF CURSOR y entonces declarar una variable de ese tipo.

● Abrir el cursor con OPEN-FOR en la parte de ejecución.

● Trabajar igual con el FETCH.


● Se cierra igual con CLOSE.
Cursores variables: ejemplo
Autoevaluación - Cursores
App Kahoot!
Ejercicios para practicar

También podría gustarte