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:
- Escribe un programa COBOL que inserte un nuevo registro en la tabla
employees
con los siguientes datos:- Nombre:
Alice Smith
- Edad:
28
- Nombre:
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:
- Escribe un programa COBOL que actualice la edad del empleado con
employee_id
igual a 2 a un nuevo valor de40
.
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:
- 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.
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