Explorando el código, creando soluciones, y compartiendo conocimientos en el fascinante mundo del desarrollo de software.

sábado, 5 de octubre de 2024

PL/SQL: Cursores en PL/SQL

Aprender PL/SQL: Cursores en PL/SQL
Cursores en PL/SQL

Introducción a los Cursores en PL/SQL

Un cursor en PL/SQL es un mecanismo que te permite recorrer filas de una consulta de forma controlada. A través de los cursores, puedes recuperar y manipular varias filas de una tabla una por una.

Tipos de Cursores

Existen dos tipos principales de cursores en PL/SQL:

  • Cursores Implícitos: Son gestionados automáticamente por Oracle cuando se ejecutan sentencias SQL como INSERT, UPDATE o SELECT INTO.
  • Cursores Explícitos: Son definidos por el usuario cuando se requiere procesar varias filas de una consulta.

Ejemplo de un Cursor Explícito

A continuación, te muestro cómo declarar y usar un cursor explícito para recorrer los datos de una tabla:

DECLARE
    CURSOR c_empleados IS
        SELECT nombre, salario FROM empleados WHERE departamento = 'Ventas';
    v_nombre empleados.nombre%TYPE;
    v_salario empleados.salario%TYPE;
BEGIN
    OPEN c_empleados;
    LOOP
        FETCH c_empleados INTO v_nombre, v_salario;
        EXIT WHEN c_empleados%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Empleado: ' || v_nombre || ' - Salario: ' || v_salario);
    END LOOP;
    CLOSE c_empleados;
END;

En este ejemplo, declaramos un cursor llamado c_empleados que selecciona los nombres y salarios de los empleados en el departamento de Ventas. El cursor se abre, y luego utilizamos un bucle para procesar cada fila, mostrando el nombre y el salario de cada empleado.

Propiedades del Cursor

Los cursores tienen varias propiedades útiles para controlar su estado:

  • %FOUND: Devuelve TRUE si el FETCH ha recuperado una fila con éxito.
  • %NOTFOUND: Devuelve TRUE si no hay más filas que recuperar.
  • %ROWCOUNT: Devuelve el número de filas recuperadas hasta el momento.

Cursores Parámetros

Los cursores también pueden aceptar parámetros para hacerlos más flexibles. Aquí te dejo un ejemplo:

DECLARE
    CURSOR c_empleados(p_depto VARCHAR2) IS
        SELECT nombre, salario FROM empleados WHERE departamento = p_depto;
    v_nombre empleados.nombre%TYPE;
    v_salario empleados.salario%TYPE;
BEGIN
    OPEN c_empleados('Ventas');
    LOOP
        FETCH c_empleados INTO v_nombre, v_salario;
        EXIT WHEN c_empleados%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE('Empleado: ' || v_nombre || ' - Salario: ' || v_salario);
    END LOOP;
    CLOSE c_empleados;
END;

En este caso, el cursor c_empleados acepta un parámetro llamado p_depto que permite filtrar los empleados según el departamento que se le pase como argumento.

Con los cursores, puedes manejar conjuntos de datos de forma flexible en PL/SQL. En la siguiente lección, exploraremos subprogramas en PL/SQL, como funciones y procedimientos.


Lección Siguiente

© 2024 Aprende con PL/SQL

No hay comentarios:

Publicar un comentario

Java Iniciación en Java Hola mundo en Java Sintaxis básica de Java Orientación a objetos en Java Manejo de excepciones en Java Java desde Cero Colecciones en Java Manejo de Archivos en Java Entrada/Salida en Java Hilos y concurrencia en Java Programación Funcional en Java Programación Orientada a Objetos (OOP) en Java Manejo de fechas y tiempos Persistencia de datos en Java Desarrollo Web en Java Manejo de dependencias Gradle Maven JUnit Git Java Desarrollo de servicios web en Java Patrones de Diseño en Java Principios Básicos de Seguridad en Java Principios SOLID en Java Frameworks populares en Java Ciclo de vida de una aplicación Java Desarrollo Ágil Base de Datos en Java Hola mundo en COBOL Estructura básica de COBOL Sintaxis Básica de COBOL Manipulación de archivos en COBOL Búsqueda en Archivos Secuenciales COBOL Ordenación y Combinación de Archivos COBOL Manejo de Errores en COBOL Subprogramas y Modularidad en COBOL Archivos Indexados en COBOL Clasificación y Fusión de Archivos en COBOL Lectura y Escritura de Archivos Secuenciales COBOL IDE Desarrollo de Software Programación Java Plugin Eclipse Desarrollo Integrado Eclipse IDE Java Development Desarrollo de Aplicaciones Programación en Eclipse Desarrollo Ágil Java EE Desarrollo Web Desarrollo Móvil Eclipse Marketplace Eclipse Plugins JavaFX Desarrollo GUI Git Control de Versiones GitHub Git Bash Git Commands Git Workflow Branching Merging Repositorios Commit Git Branch Git Pull Git Push Git Clone Git Merge Conflictos en Git Git Log Git Tag Git Remote Visual Studio Code IDE Desarrollo de Software Extensiones Editor de Código Programación Configuración VSC Snippets Depuración Control de Versiones Integración Git Atajos de Teclado Temas Productividad Extensiones VSC Lenguajes de Programación