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

  1. 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.
  2. 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.
  3. 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:

EXEC SQL
    OPEN my_cursor
END-EXEC.

Extracció de Files

Per recuperar files del conjunt de resultats, utilitzem la sentència FETCH. Aquí teniu un exemple de com fer-ho:

EXEC SQL
    FETCH my_cursor INTO :emp-id, :emp-name, :emp-salary
END-EXEC.

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:

EXEC SQL
    CLOSE my_cursor
END-EXEC.

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.

© Copyright 2024. Tots els drets reservats