Creacion de Cursores

Páginas: 8 (1832 palabras) Publicado: 28 de julio de 2014
Semana 11
Creación de Objetos PL/SQL
Cursor
Operaciones básicas con cursores
Atributos de cursores
Procedimientos Almacenados con cursores
CURSOR
Un Cursor es un espacio de memoria que le permite almacenar temporalmente filas a partir de una consulta (SELECT) en el que se puede aplicar filtros y que se usa dentro de un bloque de código PL/SQL, específicamente en procedimientosalmacenados.
Un cursor no es un objeto de la base de datos.
OPERACIONES BÁSICAS CON CURSORES
Tenemos cuatro (4) operaciones básicas con cursores:
• Declaración del cursor
• Abrir el cursor
• Recuperar información
• Cierre del cursor

Declaración del cursor
El cursor se declara (en la zona de declaraciones) según:
CURSOR IS ;
En esta operación NO se cargan con valores las filas delcursor.
Aquí solo se separa la memoria necesaria para el cursor.
Abrir el cursor
Es preparar el cursor para ser usado.
Los valores viajas de la sentencia SQL hacia el cursor.
En la zona de instrucción habrá que abrir el cursor:
OPEN ;
Recuperar información
Es llevar los valores de la única fila que el cursor está viendo hacia variables de memoria.
Para recuperar informaciónalmacenada en el cursor, use la siguiente sintaxis:
FETCH INTO {| };
Cierre del cursor
Cuando el cursor ya no se va a utilizar debe cerrarlo.
Se cierra el cursor para liberar la memoria comprometida en él y no saturar la memoria del servidor ORACLE.
Es importante considerar esta operación porque, de otro, modo se corre el riesgo que la memoria del servidor colapse.

CLOSE ;

Atributos deCursores
Veamos ahora algunos atributos de cursores (tenemos 4):
%FOUND
Devuelve verdadero si el último FETCH ha recuperado algún valor.
En caso contrario devuelve falso.
Si el cursor no esta abierto devuelve error.
Si el cursor está abierto y no se había ejecutado aun ningún FETCH devuelve NULL.
Se puede utilizar como condición de continuación en bucles para recuperar información.Atributos de Cursores
%NOTFOUND
Se suele utilizar como una condición de salida de bucles
EXIT WHEN %NOT FOUND;
%ROWCOUNT
Devuelve el número de filas recuperadas hasta el momento por el cursor.
%ISOPEN
Devuelve verdadero si está abierto.
Devuelve falso si está contrario.
Procedimientos con Cursores
Los cursores han sido creados para ser usados en procedimientos almacenados.Consideraciones
• Declare el cursor en la zona de declaraciones del procedimiento almacenado.
• Declare también la(s) variable(s) necesarias para el FETCH.
• Trate de utilizar los mismo tipos de datos de las tablas, mediante TABLA.COLUMNA%TYPE.

Ejemplo
CREATE OR REPLACE PROCEDURE VIVEN_EN(XC CLIENTES.ciudad%TYPE)
IS
CURSOR CURSOR_POB IS SELECT Codigo
FROM CLIENTES
WHERE Ciudad=XC; --Declaramos el cursor con el parámetro
XCOD CLIENTES.Codigo%TYPE; -- Declaramos la variable para le FETCH
BEGIN
OPEN CURSOR_POB; -- Abrimos el cursor
FETCH CURSOR_POB INTO XCOD; -- recuperamos la variable
WHILE CURSOR_POB%FOUND LOOP
UPDATE CLIENTE_CIUDAD SET CIUDAD=XC
WHERE cliente=XCOD;
FETCH CURSOR_POB INTO XCOD;
END LOOP;
CLOSE CURSOR_POB; -- Cerramos el cursor
END;
/declare
-- Creamos el cursor:
cursor C is select cod,cant*precio from det_vtas;
a number; -- Declaramos la variable a para cod
t number; -- Declaramos la variable t para subtotal
begin
open C; -- Leemos datos desde la tabla
loop -- Inicamos un bucle repetitivo
fetch C into a,t; -- Recuperamos datos desde el cursorexit when not c%found;
update det_vtas set subtotal=t where cod=a;
end loop; -- Fin del bucle
close C; -- Liberamos la memoria usada
end;
/
---------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE SP_Corrije_subtotal (xEstado char) IS
-- Creamos el cursor
cursor...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • cursores
  • Cursores
  • Manejo de cursores
  • CURSORES EN ORACLE
  • Cursores Oracle
  • Cursor mosca
  • iconos y cursores
  • Cursores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS