En aquest tema, aprendrem sobre la gestió de cursors en COBOL quan treballem amb bases de dades. Els cursors són una eina essencial per gestionar conjunts de resultats de consultes SQL dins d'un programa COBOL. Ens permeten processar múltiples files de dades una a una, cosa que és crucial per a moltes aplicacions empresarials.
Conceptes Clau
-
Què és un Cursor?
- Un cursor és un mecanisme que permet recórrer un conjunt de resultats fila per fila.
- S'utilitza per gestionar consultes SQL que retornen múltiples files.
-
Tipus de Cursors
- Cursors Implícits: Creats automàticament pel sistema per a operacions SQL simples.
- Cursors Explícits: Definits i gestionats pel programador per a un control més gran sobre el conjunt de resultats.
-
Operacions Bàsiques amb Cursors
- Declaració del Cursor: Definir el cursor i l'SQL associat.
- Obertura del Cursor: Executar la consulta SQL i preparar el conjunt de resultats.
- Extracció de Files: Recuperar files del conjunt de resultats una a una.
- Tancament del Cursor: Alliberar els recursos associats amb el cursor.
Declaració del Cursor
Per declarar un cursor en COBOL, utilitzem la sentència DECLARE CURSOR. Aquí teniu un exemple bàsic:
EXEC SQL
DECLARE my_cursor CURSOR FOR
SELECT emp_id, emp_name, emp_salary
FROM employees
WHERE emp_department = 'SALES'
END-EXEC.Obertura del Cursor
Després de declarar el cursor, l'hem d'obrir per executar la consulta SQL i preparar el conjunt de resultats:
Extracció de Files
Per recuperar files del conjunt de resultats, utilitzem la sentència FETCH. Aquí teniu un exemple de com fer-ho:
Aquest codi recupera una fila del conjunt de resultats i emmagatzema els valors en les variables COBOL emp-id, emp-name i emp-salary.
Tancament del Cursor
Un cop hem acabat de processar les files, hem de tancar el cursor per alliberar els recursos:
Exemple Complet
A continuació, es mostra un exemple complet que inclou la declaració, obertura, extracció i tancament d'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 my_cursor CURSOR FOR
SELECT emp_id, emp_name, emp_salary
FROM employees
WHERE emp_department = 'SALES'
END-EXEC.
EXEC SQL
OPEN my_cursor
END-EXEC.
PERFORM UNTIL SQLCODE NOT = 0
EXEC SQL
FETCH my_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 my_cursor
END-EXEC.
STOP RUN.Exercici Pràctic
Exercici:
Creeu un programa COBOL que utilitzi un cursor per recuperar i mostrar tots els productes d'una taula products on el preu sigui superior a 100.
Solució:
IDENTIFICATION DIVISION.
PROGRAM-ID. ProductCursorExample.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 prod-id PIC 9(5).
01 prod-name PIC X(30).
01 prod-price PIC 9(7)V99.
PROCEDURE DIVISION.
EXEC SQL
DECLARE product_cursor CURSOR FOR
SELECT product_id, product_name, product_price
FROM products
WHERE product_price > 100
END-EXEC.
EXEC SQL
OPEN product_cursor
END-EXEC.
PERFORM UNTIL SQLCODE NOT = 0
EXEC SQL
FETCH product_cursor INTO :prod-id, :prod-name, :prod-price
END-EXEC
IF SQLCODE = 0
DISPLAY 'Product ID: ' prod-id
DISPLAY 'Product Name: ' prod-name
DISPLAY 'Product Price: ' prod-price
END-IF
END-PERFORM.
EXEC SQL
CLOSE product_cursor
END-EXEC.
STOP RUN.Resum
En aquesta secció, hem après què són els cursors i com utilitzar-los en COBOL per gestionar conjunts de resultats de consultes SQL. Hem vist com declarar, obrir, extreure files i tancar un cursor, i hem practicat amb un exemple complet i un exercici pràctic. La gestió de cursors és una habilitat essencial per treballar amb bases de dades en COBOL, i dominar-la us permetrà crear aplicacions més eficients i robustes.
Curs de Programació COBOL
Mòdul 1: Introducció al COBOL
- Què és el COBOL?
- Història del COBOL
- Configuració de l'Entorn COBOL
- Estructura Bàsica d'un Programa COBOL
Mòdul 2: Sintaxi Bàsica del COBOL i Tipus de Dades
Mòdul 3: Estructures de Control
Mòdul 4: Treballant amb Dades
- Gestió d'Arxius en COBOL
- Processament d'Arxius Seqüencials
- Processament d'Arxius Indexats
- Processament d'Arxius Relatius
Mòdul 5: Gestió Avançada de Dades
Mòdul 6: Subprogrames i Programació Modular
Mòdul 7: Gestió d'Errors i Depuració
Mòdul 8: COBOL i Bases de Dades
Mòdul 9: Temes Avançats
- COBOL Orientat a Objectes
- COBOL i Serveis Web
- Optimització del Rendiment
- Millors Pràctiques en Programació COBOL
