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
productsdonde elcategorysea 'Electronics'. - Abre el cursor y recupera los datos de cada producto.
- Muestra el
product_id,product_nameypricede 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
