Entrtevista Laboral
Cursores Explícitos
Copyright © Oracle Corporation, 1998. All rights reserved.
Objetivos
Al final de esta lección, usted podrá:
Al final de esta lección, usted podrá:
• Distinguir entre un cursor explícito y
• Distinguir entre un cursor explícito y
otro implícito
otro implícito
• Utilizar una variable de registro PL/SQL
• Utilizar una variable de registro PL/SQL
• Escribir unbucle de cursor FOR
• Escribir un bucle de cursor FOR
8-2
Copyright © Oracle Corporation, 1998. All rights reserved.
Acerca de los Cursores
Todas las sentencias SQL ejecutadas por
Todas las sentencias SQL ejecutadas por
el Servidor Oracle8 tienen un cursor
el Servidor Oracle8 tienen un cursor
individual asociado:
individual asociado:
individual
• Cursores implícitos: Declaradospara
• Cursores implícitos: Declarados para
todas las sentencias DML y PL/SQL
todas las sentencias DML y PL/SQL
SELECT.
SELECT.
• Cursores explícitos: Declarados y
• Cursores explícitos: Declarados y
nombrados por el programador.
nombrados por el programador.
8-3
Copyright © Oracle Corporation, 1998. All rights reserved.
Funciones de Cursores
Funciones
Explícitos
ExplExplícitos
Juego de Resultados
7369 SMITH
7566 JONES
7788 SCOTT
ANALYST
CLERK
7902 FORD
8-4
MANAGER
7876 ADAMS
Cursor
CLERK
ANALYST
Copyright © Oracle Corporation, 1998. All rights reserved.
Fila Actual
Control de Cursores Explícitos
Explícitos
No
Sí
DECLARE
DECLARE
• Crear un
Crear
área SQL
rea
especifica
especifica
OPEN
OPEN
FETCH
FETCH
•Identificar • Cargar la
Identificar
Cargar
el juego
activo
activo
fila actual
en
variables
variables
¿VACÍO?
• Buscar
Buscar
filas
existentes
existentes
• Volver a
Volver
FETCH si
encontró
encontr
filas
8-5
Copyright © Oracle Corporation, 1998. All rights reserved.
CLOSE
CLOSE
• Liberar el
Liberar
juego
activo
activo
Control de Cursores ExplícitosExplícitos
Abra el cursor.
Puntero
Cursor
Recupere una fila del cursor
Puntero
Cursor
Continúe hasta que quede vacío
Puntero
Cursor
8-6
Copyright © Oracle Corporation, 1998. All rights reserved.
Declaración del Cursor
Declaración
Sintaxis
Sintaxis
CURSOR cursor_name IS
CURSOR cursor_name IS
select_statement;
select_statement;
• No incluya la cláusula INTO en la
• Noincluya la cláusula INTO en la
declaración del cursor.
declaración del cursor.
• Si es necesario procesar filas en una
• Si es necesario procesar filas en una
secuencia, utilice la cláusula ORDER BY
secuencia, utilice la cláusula ORDER BY
en la consulta.
en la consulta.
8-7
Copyright © Oracle Corporation, 1998. All rights reserved.
Declaración del Cursor
Declaración
EjemploEjemplo
DECLARE
DECLARE
CURSOR c1 IS
CURSOR c1 IS
SELECT empno, ename, job, sal
SELECT empno, ename, job, sal
FROM
FROM emp
emp
WHERE sal > 2000;
WHERE sal > 2000;
CURSOR c2 RETURN dept%ROWTYPE IS
CURSOR c2 RETURN dept%ROWTYPE IS
SELECT *
SELECT *
FROM
FROM dept
dept
WHERE deptno = 10;
WHERE deptno = 10;
BEGIN
BEGIN
...
...
8-8
Copyright © Oracle Corporation, 1998. Allrights reserved.
Apertura del Cursor
Sintaxis
Sintaxis
OPEN cursor_name;
OPEN cursor_name;
• Abra el cursor para ejecutar la consulta
• Abra el cursor para ejecutar la consulta
e identificar el juego activo.
e identificar el juego activo.
• Si la consulta no devuelve ninguna fila,
• Si la consulta no devuelve ninguna fila,
no se producirá ninguna excepción.
no se producirá ningunaexcepción.
• Utilice los atributos del cursor para
• Utilice los atributos del cursor para
comprobar los resultados producidos
comprobar los resultados producidos
tras una recuperación.
tras una recuperación.
8-9
Copyright © Oracle Corporation, 1998. All rights reserved.
Recuperación de Datos del Cursor
Recuperación
Sintaxis
Sintaxis
FETCH cursor_name INTO [variable1,...
Regístrate para leer el documento completo.