Cursores explicitos
Enviado por maideniron • 19 de Junio de 2018 • Documentos de Investigación • 606 Palabras (3 Páginas) • 152 Visitas
Procesando queries usando cursores explicitos
Tipos de Cursores:
Cursores implicitos:
Cada sentencia SQL ejecutada en la base de datos tiene asociado un cursor para ejecutarse, estos cursores “Automaticos” se les llama implicitos y son usados por el DBMS para todo DML y sentencias SELECT.
Cursores Explicitos:
Son declarados y nombrados por el programador y manipulados por medio de una o varias sentencias especificas dentro de un bloque PL/SQL.
Funciones de los cursores explicitos:
Pueden procesar mas alla de la primera fila retornada por un query, fila por fila.
Mantienen el registro de cual fila esta actualmente siendo procesada.
Permiten al programador controlarlos manualmente dentro de un bloque PL/SQL.
Controlando cursores explicitos
[pic 1]
- Declarar el cursor
Declara el cursor en el area de declaracion de variables del bloque PL/SQL (declare...) poniendole nombre y declarando el query que sera realizado por el cursor.
- Abrir el cursor
La sentencia OPEN ejecuta el query y trae los valores a variables del “Area privada de SQL” para ser referenciadas. Las filas identificadas por el query son llamados “Conjunto Activo” y son las filas o tuplas listas o disponibles para traer.
- Traer datos desde el cursor
La sentencia FETCH carga la fila actual desde el cursor hacia variables. Cada FETCH causa que el cursor mueva su puntero hacia la siguiente fila en el “Conjunto Activo” por tanto, cada Fetch accesa a una fila diferente retornada por el query del cursor.
En el diagrama de flujo de arriba despues de cada fetch verifica la existencia de más filas. Si la fila es encontrada la carga en las variables del conjunto activo, si no cierra el cursor.
- Cerrar el cursor
La sentencia CLOSE suelta o libera el “Conjunto Activo” de filas.
Declarando el cursor:
Sintaxis:
CURSOR nombre_del_cursor IS
Sentencia Select;
Ejemplo:
Declare
V_ord_id number(7);
CURSOR item_cursor IS
SELECT product_id, price * quentity
FROM s_item
WHERE ord_id = v_ord_id;
Begin
..........
End;
Abrir el cursor:
Sintaxis:
OPEN nombre_del_cursor;
Trayendo datos del Cursor (Apuntando o haciendo FETCH):
FETCH nombre_del_cursor INTO variable1, variable2, . . .;
Cerrando el cursor:
CLOSE nombre_del_cursor;
Atributos de un cursor explicito:
%ISOPEN | Atributo boleano que evalua en Verdadero (TRUE) si el cursor esta abierto. |
%NOTFOUND | Atributo boleano que evalua en Verdadero (TRUE) si el mas reciente FETCH no retorno ninguna fila. |
%FOUND | Atributo boleano que evalua en Verdadero (TRUE) hasta que el más reciente FETCH no retorne una fila, es complemento de %NOTFOUND |
%ROWCOUNT | Atributo numerico que evalua el numero total de filas retornadas. |
...