En este tema, aprenderemos sobre el manejo de cursores en COBOL cuando trabajamos con bases de datos. Los cursores son una herramienta esencial para manejar conjuntos de resultados de consultas SQL de manera eficiente. A través de este módulo, cubriremos los conceptos básicos de los cursores, cómo declararlos, abrirlos, usarlos para recuperar datos y cerrarlos.
Conceptos Básicos de Cursores
Un cursor es un mecanismo que permite recorrer fila por fila un conjunto de resultados de una consulta SQL. Los cursores son útiles cuando necesitas procesar cada fila individualmente en lugar de trabajar con el conjunto completo de resultados a la vez.
Tipos de Cursores
- Cursores Estáticos: Capturan un conjunto de resultados en el momento en que se abre el cursor y no reflejan cambios posteriores en la base de datos.
- Cursores Dinámicos: Reflejan los cambios en la base de datos mientras se recorren las filas.
- Cursores de Solo Adelante: Permiten moverse solo hacia adelante a través del conjunto de resultados.
Declaración de Cursores
Para usar un cursor en COBOL, primero debes declararlo en la sección de SQL embebido. Aquí hay un ejemplo básico de cómo declarar un cursor:
EXEC SQL DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table_name WHERE condition END-EXEC.
Ejemplo
EXEC SQL DECLARE employee_cursor CURSOR FOR SELECT emp_id, emp_name, emp_salary FROM employees WHERE emp_department = 'IT' END-EXEC.
Apertura de Cursores
Después de declarar un cursor, debes abrirlo para ejecutar la consulta y preparar el conjunto de resultados.
Ejemplo
Recuperación de Datos
Para recuperar datos de un cursor, utilizamos la sentencia FETCH
. Esto mueve el cursor a la siguiente fila del conjunto de resultados y copia los valores de las columnas en las variables COBOL.
Ejemplo
Cierre de Cursores
Una vez que hayas terminado de usar un cursor, debes cerrarlo para liberar los recursos asociados.
Ejemplo
Ejemplo Completo
A continuación, se muestra un ejemplo completo que incluye la declaración, apertura, recuperación de datos y cierre de un cursor.
IDENTIFICATION DIVISION. PROGRAM-ID. CursorExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 EMP-ID PIC 9(5). 01 EMP-NAME PIC X(20). 01 EMP-SALARY PIC 9(7)V99. PROCEDURE DIVISION. EXEC SQL DECLARE employee_cursor CURSOR FOR SELECT emp_id, emp_name, emp_salary FROM employees WHERE emp_department = 'IT' END-EXEC. EXEC SQL OPEN employee_cursor END-EXEC. PERFORM UNTIL SQLCODE NOT = 0 EXEC SQL FETCH employee_cursor INTO :EMP-ID, :EMP-NAME, :EMP-SALARY END-EXEC IF SQLCODE = 0 DISPLAY 'Employee ID: ' EMP-ID DISPLAY 'Employee Name: ' EMP-NAME DISPLAY 'Employee Salary: ' EMP-SALARY END-IF END-PERFORM. EXEC SQL CLOSE employee_cursor END-EXEC. STOP RUN.
Ejercicio Práctico
Ejercicio
- Declara un cursor para seleccionar todos los productos de una tabla
products
donde elcategory
sea 'Electronics'. - Abre el cursor y recupera los datos de cada producto.
- Muestra el
product_id
,product_name
yprice
de cada producto. - Cierra el cursor al finalizar.
Solución
IDENTIFICATION DIVISION. PROGRAM-ID. ProductCursorExample. DATA DIVISION. WORKING-STORAGE SECTION. 01 PRODUCT-ID PIC 9(5). 01 PRODUCT-NAME PIC X(30). 01 PRICE PIC 9(5)V99. PROCEDURE DIVISION. EXEC SQL DECLARE product_cursor CURSOR FOR SELECT product_id, product_name, price FROM products WHERE category = 'Electronics' END-EXEC. EXEC SQL OPEN product_cursor END-EXEC. PERFORM UNTIL SQLCODE NOT = 0 EXEC SQL FETCH product_cursor INTO :PRODUCT-ID, :PRODUCT-NAME, :PRICE END-EXEC IF SQLCODE = 0 DISPLAY 'Product ID: ' PRODUCT-ID DISPLAY 'Product Name: ' PRODUCT-NAME DISPLAY 'Price: ' PRICE END-IF END-PERFORM. EXEC SQL CLOSE product_cursor END-EXEC. STOP RUN.
Conclusión
En este tema, hemos aprendido cómo manejar cursores en COBOL para trabajar con conjuntos de resultados de consultas SQL. Hemos cubierto la declaración, apertura, recuperación de datos y cierre de cursores, y hemos visto un ejemplo completo y un ejercicio práctico para reforzar los conceptos. Con esta base, estarás preparado para manejar conjuntos de datos más complejos y realizar operaciones detalladas en tus programas COBOL.
Curso de Programación COBOL
Módulo 1: Introducción a COBOL
- ¿Qué es COBOL?
- Historia de COBOL
- Configuración del Entorno COBOL
- Estructura Básica de un Programa COBOL
Módulo 2: Sintaxis Básica de COBOL y Tipos de Datos
Módulo 3: Estructuras de Control
Módulo 4: Trabajando con Datos
- Manejo de Archivos en COBOL
- Procesamiento de Archivos Secuenciales
- Procesamiento de Archivos Indexados
- Procesamiento de Archivos Relativos
Módulo 5: Manejo Avanzado de Datos
Módulo 6: Subprogramas y Programación Modular
Módulo 7: Manejo de Errores y Depuración
Módulo 8: COBOL y Bases de Datos
Módulo 9: Temas Avanzados
- COBOL Orientado a Objetos
- COBOL y Servicios Web
- Optimización del Rendimiento
- Mejores Prácticas en Programación COBOL