5. Cursores

Contenido

Un cursor en PL/SQL es un mecanismo que permite manejar y procesar filas de datos que son devueltas por una consulta SQL dentro de un bloque PL/SQL. Los cursores permiten iterar sobre un conjunto de resultados, fila por fila, para realizar operaciones espec铆ficas sobre cada registro, como actualizar, insertar o realizar c谩lculos.

1.聽Tipos de cursores: expl铆citos e impl铆citos

  • Cursores Impl铆citos: Son aquellos que son manejados autom谩ticamente por el sistema de base de datos. Estos cursores son creados impl铆citamente por la ejecuci贸n de sentencias SQL, como SELECT. No requieren una declaraci贸n expl铆cita y son convenientes para operaciones simples.

  • Cursores Expl铆citos: Son declarados expl铆citamente por el programador. Se utilizan para realizar operaciones m谩s avanzadas, como procesamiento de filas una por una, navegaci贸n a trav茅s de conjuntos de resultados, y manipulaci贸n de datos de manera m谩s controlada. Requieren declaraciones OPEN, FETCH y CLOSE para su uso adecuado.

2. Manipulaci贸n de cursores: OPEN, FETCH y CLOSE

  • OPEN: La sentencia OPEN se utiliza para abrir un cursor expl铆cito antes de recuperar filas de un conjunto de resultados. Es importante abrir un cursor antes de usar la sentencia FETCH para obtener datos de 茅l.

  • FETCH: La sentencia FETCH se utiliza para recuperar filas de un cursor despu茅s de que ha sido abierto con la sentencia OPEN. FETCH obtiene la pr贸xima fila del conjunto de resultados y asigna sus valores a variables especificadas.

  • CLOSE: La sentencia CLOSE se utiliza para cerrar un cursor expl铆cito despu茅s de que se ha completado el procesamiento de todas las filas o cuando ya no se necesita el cursor. Es una buena pr谩ctica cerrar los cursores expl铆citos para liberar recursos de la base de datos.

3. Cursores FOR LOOP y su aplicaci贸n pr谩ctica

Un cursor FOR LOOP es una forma simplificada de trabajar con cursores expl铆citos en PL/SQL. Elimina la necesidad de declarar expl铆citamente el cursor, abrirlo, recuperar filas y cerrarlo, ya que estas tareas se manejan autom谩ticamente. Aqu铆 tienes un ejemplo de c贸mo usar un cursor FOR LOOP:

				
					DECLARE
    -- Declaraci贸n del cursor
    CURSOR nombre_cursor IS
        SELECT columna1, columna2 FROM tabla;
BEGIN
    -- Uso del cursor con un bucle FOR
    FOR registro IN nombre_cursor LOOP
        -- Procesamiento de cada fila
        DBMS_OUTPUT.PUT_LINE('Columna1: ' || registro.columna1 || ', Columna2: ' || registro.columna2);
    END LOOP;
END;

				
			

Este tipo de bucle simplifica la estructura y hace que el c贸digo sea m谩s legible. Es 煤til cuando necesitas recorrer todas las filas devueltas por una consulta y realizar alguna operaci贸n con cada una de ellas.