Вы находитесь на странице: 1из 23

Mg.

Jorge Cárdenas
MOVE
 Reposiciona un cursor sin devolver
datos
 Funciona igual que FETCH, pero solo
reposiciona el cursor y no devuelve la
fila a la que se mueve
 Como SELECT INTO la variable
FOUND puede ser usada para verificar
si hay o no otra fila a la cual moverse
MOVE cont.
 La clausula direction puede ser
cualquier variante permitida en el
comando FETCH
 NEXT (por defecto)
 PRIOR
 FIRST
 LAST
 ABSOLUTE count
 RELATIVE count
Ejemplos
UPDATE/DELETE WHERE
CURRENT OF
 Cuando un cursos esta posicionado en
una fila de una tabla, la fila puede ser
actualizada o eliminada usando un
cursor que identifica esa fila
 No se puede usar group by
Devolviendo cursores
 Una función puede devolver un cursor
 Esto es útil para devolver varias filas o
columnas. Especialmente en conjuntos
de datos grandes
 La función debe abrir el cursor y
devolverlo
 El que llama a la función puede utilizarlo
y luego cerrarlo con close o cuando la
transacción concluye
Devolviendo cursores cont.
 El nombre del cursor se puede
especificar por parámetro o
automáticamente generado
 Se asigna mediante una cadena de
caracteres
 Si no se especifica se genera uno que
no entre en conflicto con otros nombres
Especificando un nombre
Generar automáticamente
Devolver varios cursores
Moviéndose a través del
resultado de un cursor
 Usando una sintaxis similar a la sentencia
FOR

 Debe ser un cursor bound


 No puede estar abierto
 La variable recordar es definida
automáticamente como tipo record y solo
existe dentro del bucle
Comando RAISE
 Permite reportar mensajes y lanzar
errores

 Level especifica la severidad


 DEBUG, LOG, INFO, NOTICE, WARNING y
EXCEPTION (por defecto – termina la
ejecución de la función)
Comando RAISE cont.
 Después de Level, se puede escribir el
formato del mensaje a ser reportado
 Los valores de las variables son
reemplazados por % en el literal

 Se puede agregar informacion adicional al


error con USING seguido de
opcion=expresssion
Comando RAISE cont.
 Las opciones posibles son
 MESSAGE
 DETAIL
 HINT
 ERRCODE
 COLUMN, CONSTRAINT, DATATYPE,
TABLE, SCHEMA
Ejemplos
Parámetros por defecto
 Cuando se usa RAISE EXCEPTION y
no se especifica la excepción, se lanza
la excepción por defecto P0001
 Si ningún mensaje de texto es
especificado, el mensaje de texto dentro
de SQLSTATE es usado
Detectando Assertions
 ES una conveniente manera de agregar
chequeos de depuración dentro de una
función PL/pgSQL

 La condición es booleana y se espera que


siempre se evalúa a verdadera
 Si no es verdadera una excepción es
lanzada con el mensaje
 Sirve para encontrar bugs, no para
condiciones de errores normales
Tarea en Clase 1
 Crear una función que permita
transformar un numero binario (no como
cadena) a un numero decimal
 Implemente ASSERT para verificar que el
numero binario ingresado no sea negativo y
muestre un mensaje de ser el caso
 Debe usar bucles y condicionales
 Devolver el valor como un INTEGER
Tarea en Clase 2
 Crear una función que devuelva los
inmuebles ordenados por el mayor numero
de habitaciones (casa)
 Usar Inner Join
 La función debe abrir un cursor unbound
para obtener los datos y almacenarlos en
un tipo RECORD a ser devuelto al final de
la función
 Antes de devolver el valor utilizar
 MOVE FORWARD 2 FROM para mover 2 filas
 FETCH ….. INTO …… para grabar el resultado
a devolver
Tarea en Clase 3
 Crear una función que devuelva los
inmuebles ordenados por el mayor
numero de baños (casa) mediante un
cursor (Tipo a devolver refcursor)
 Usar Inner Join
 El nombre del cursor a devolver debe
ser pasado por parámetro
 Abrir el cursor con la consulta y
devolverla inmediatamente, no hay
operaciones extra en la función
Tarea en Clase 3 cont.
 Luego en una transacción (Bloque
BEGIIN; COMMIT; ) se debe realizar las
siguientes operaciones
 Mover el cursor 3 posiciones sin desplegar
datos (MOVE)
 Devolver el primer valor de atrás con
FETCH BACKWARD 1

Вам также может понравиться