En este tema, aprenderemos cómo realizar operaciones básicas de base de datos utilizando COBOL y SQL embebido. Nos enfocaremos en las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) y cómo integrarlas en un programa COBOL.

Contenido

Introducción a las Operaciones CRUD

Las operaciones CRUD son fundamentales en cualquier aplicación que maneje datos. A continuación, se describen brevemente:

  • Crear (Create): Insertar nuevos registros en la base de datos.
  • Leer (Read): Recuperar datos de la base de datos.
  • Actualizar (Update): Modificar registros existentes en la base de datos.
  • Eliminar (Delete): Borrar registros de la base de datos.

Conectando COBOL con una Base de Datos

Para realizar operaciones de base de datos en COBOL, primero debemos establecer una conexión con la base de datos. Esto se hace utilizando SQL embebido en COBOL.

Ejemplo de Conexión

IDENTIFICATION DIVISION.
PROGRAM-ID. ConnectDB.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).

PROCEDURE DIVISION.
    EXEC SQL
        CONNECT TO 'database_name'
        USER 'username'
        USING 'password'
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error connecting to database: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Connected to database successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

En este ejemplo, reemplaza 'database_name', 'username' y 'password' con los valores correspondientes a tu base de datos.

Operaciones de Inserción (INSERT)

La operación de inserción se utiliza para agregar nuevos registros a una tabla.

Ejemplo de Inserción

IDENTIFICATION DIVISION.
PROGRAM-ID. InsertRecord.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).
01  WS-NAME          PIC X(20) VALUE 'John Doe'.
01  WS-AGE           PIC 9(2) VALUE 30.

PROCEDURE DIVISION.
    EXEC SQL
        INSERT INTO employees (name, age)
        VALUES (:WS-NAME, :WS-AGE)
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error inserting record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record inserted successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

En este ejemplo, se inserta un nuevo registro en la tabla employees con los valores de WS-NAME y WS-AGE.

Operaciones de Lectura (SELECT)

La operación de lectura se utiliza para recuperar datos de la base de datos.

Ejemplo de Lectura

IDENTIFICATION DIVISION.
PROGRAM-ID. SelectRecord.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).
01  WS-NAME          PIC X(20).
01  WS-AGE           PIC 9(2).

PROCEDURE DIVISION.
    EXEC SQL
        SELECT name, age
        INTO :WS-NAME, :WS-AGE
        FROM employees
        WHERE employee_id = 1
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error selecting record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Name: ' WS-NAME.
    DISPLAY 'Age: ' WS-AGE.

    STOP RUN.

En este ejemplo, se recupera el nombre y la edad del empleado con employee_id igual a 1.

Operaciones de Actualización (UPDATE)

La operación de actualización se utiliza para modificar registros existentes en la base de datos.

Ejemplo de Actualización

IDENTIFICATION DIVISION.
PROGRAM-ID. UpdateRecord.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).
01  WS-NEW-AGE       PIC 9(2) VALUE 35.

PROCEDURE DIVISION.
    EXEC SQL
        UPDATE employees
        SET age = :WS-NEW-AGE
        WHERE employee_id = 1
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error updating record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record updated successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

En este ejemplo, se actualiza la edad del empleado con employee_id igual a 1 a un nuevo valor de 35.

Operaciones de Eliminación (DELETE)

La operación de eliminación se utiliza para borrar registros de la base de datos.

Ejemplo de Eliminación

IDENTIFICATION DIVISION.
PROGRAM-ID. DeleteRecord.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).

PROCEDURE DIVISION.
    EXEC SQL
        DELETE FROM employees
        WHERE employee_id = 1
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error deleting record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record deleted successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

En este ejemplo, se elimina el registro del empleado con employee_id igual a 1.

Ejercicios Prácticos

Ejercicio 1: Inserción de un Nuevo Registro

Instrucciones:

  1. Escribe un programa COBOL que inserte un nuevo registro en la tabla employees con los siguientes datos:
    • Nombre: Alice Smith
    • Edad: 28

Solución:

IDENTIFICATION DIVISION.
PROGRAM-ID. InsertAlice.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).
01  WS-NAME          PIC X(20) VALUE 'Alice Smith'.
01  WS-AGE           PIC 9(2) VALUE 28.

PROCEDURE DIVISION.
    EXEC SQL
        INSERT INTO employees (name, age)
        VALUES (:WS-NAME, :WS-AGE)
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error inserting record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record inserted successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

Ejercicio 2: Actualización de un Registro

Instrucciones:

  1. Escribe un programa COBOL que actualice la edad del empleado con employee_id igual a 2 a un nuevo valor de 40.

Solución:

IDENTIFICATION DIVISION.
PROGRAM-ID. UpdateEmployee2.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).
01  WS-NEW-AGE       PIC 9(2) VALUE 40.

PROCEDURE DIVISION.
    EXEC SQL
        UPDATE employees
        SET age = :WS-NEW-AGE
        WHERE employee_id = 2
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error updating record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record updated successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

Ejercicio 3: Eliminación de un Registro

Instrucciones:

  1. Escribe un programa COBOL que elimine el registro del empleado con employee_id igual a 3.

Solución:

IDENTIFICATION DIVISION.
PROGRAM-ID. DeleteEmployee3.

DATA DIVISION.
WORKING-STORAGE SECTION.
01  SQLCODE          PIC S9(9) COMP-5.
01  SQLSTATE         PIC X(5).

PROCEDURE DIVISION.
    EXEC SQL
        DELETE FROM employees
        WHERE employee_id = 3
    END-EXEC.

    IF SQLCODE NOT = 0
        DISPLAY 'Error deleting record: ' SQLCODE
        STOP RUN
    END-IF.

    DISPLAY 'Record deleted successfully'.

    EXEC SQL
        COMMIT
    END-EXEC.

    STOP RUN.

Conclusión

En esta sección, hemos aprendido cómo realizar operaciones básicas de base de datos en COBOL utilizando SQL embebido. Hemos cubierto las operaciones CRUD fundamentales: Crear, Leer, Actualizar y Eliminar. Estas operaciones son esenciales para cualquier aplicación que maneje datos y son la base para trabajar con bases de datos en COBOL.

En el próximo tema, exploraremos el manejo de cursores en COBOL, lo que nos permitirá trabajar con conjuntos de resultados más complejos y realizar operaciones más avanzadas en nuestras bases de datos.

© Copyright 2024. Todos los derechos reservados