En este módulo, aprenderemos cómo el Lenguaje de Control (CL) puede interactuar con bases de datos. Este conocimiento es crucial para cualquier programador que necesite manipular datos almacenados en bases de datos desde programas CL. Cubriremos los conceptos básicos, comandos específicos y ejemplos prácticos para que puedas aplicar estos conocimientos en tus proyectos.

Objetivos del Módulo

  • Entender cómo CL puede interactuar con bases de datos.
  • Aprender los comandos básicos para la manipulación de bases de datos.
  • Implementar ejemplos prácticos de interacción con bases de datos.
  • Realizar ejercicios para reforzar los conceptos aprendidos.

Contenido

Conceptos Básicos de Interfaz con Bases de Datos

Antes de sumergirnos en los comandos y ejemplos, es importante entender algunos conceptos básicos:

  • Base de Datos (DB): Un sistema organizado para almacenar, gestionar y recuperar información.
  • Tabla: Una estructura dentro de una base de datos que almacena datos en filas y columnas.
  • Registro: Una fila en una tabla que contiene datos relacionados.
  • Campo: Una columna en una tabla que contiene un tipo específico de datos.

Comandos de Base de Datos en CL

CL proporciona varios comandos para interactuar con bases de datos. A continuación, se presentan algunos de los comandos más utilizados:

  1. RUNSQLSTM

Este comando ejecuta una sentencia SQL almacenada en un archivo fuente.

RUNSQLSTM SRCFILE(MYLIB/QSQLSRC) SRCMBR(MYSQL)

  1. RUNSQL

Ejecuta una sentencia SQL directamente desde el programa CL.

RUNSQL SQL('SELECT * FROM MYLIB.MYTABLE')

  1. STRQMQRY

Inicia una consulta de Query Management (QM).

STRQMQRY QMQRY(MYLIB/MYQUERY)

  1. CPYFRMQRYF

Copia los resultados de una consulta a un archivo físico.

CPYFRMQRYF FROMOPNID(MYQUERY) TOFILE(MYLIB/MYFILE)

Ejemplos Prácticos

Ejemplo 1: Ejecutar una Consulta SQL

Vamos a ejecutar una consulta SQL que selecciona todos los registros de una tabla llamada EMPLOYEES.

PGM
    DCL VAR(&SQLCMD) TYPE(*CHAR) LEN(100)
    CHGVAR VAR(&SQLCMD) VALUE('SELECT * FROM EMPLOYEES')
    RUNSQL SQL(&SQLCMD)
ENDPGM

Explicación:

  • DCL VAR(&SQLCMD) TYPE(*CHAR) LEN(100): Declara una variable de tipo carácter para almacenar la sentencia SQL.
  • CHGVAR VAR(&SQLCMD) VALUE('SELECT * FROM EMPLOYEES'): Asigna la sentencia SQL a la variable.
  • RUNSQL SQL(&SQLCMD): Ejecuta la sentencia SQL almacenada en la variable.

Ejemplo 2: Copiar Resultados de una Consulta a un Archivo

Vamos a copiar los resultados de una consulta a un archivo físico.

PGM
    STRQMQRY QMQRY(MYLIB/EMPQUERY)
    CPYFRMQRYF FROMOPNID(EMPQUERY) TOFILE(MYLIB/EMPRESULT)
ENDPGM

Explicación:

  • STRQMQRY QMQRY(MYLIB/EMPQUERY): Inicia la consulta EMPQUERY almacenada en la biblioteca MYLIB.
  • CPYFRMQRYF FROMOPNID(EMPQUERY) TOFILE(MYLIB/EMPRESULT): Copia los resultados de la consulta al archivo EMPRESULT.

Ejercicios Prácticos

Ejercicio 1: Crear y Ejecutar una Consulta SQL

Instrucciones:

  1. Crea una tabla llamada DEPARTMENTS con los campos DEPT_ID y DEPT_NAME.
  2. Inserta algunos registros en la tabla.
  3. Escribe un programa CL que seleccione todos los registros de la tabla DEPARTMENTS.

Solución:

-- Crear la tabla
CREATE TABLE DEPARTMENTS (
    DEPT_ID INT PRIMARY KEY,
    DEPT_NAME VARCHAR(100)
);

-- Insertar registros
INSERT INTO DEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (1, 'HR');
INSERT INTO DEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (2, 'Finance');
INSERT INTO DEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (3, 'IT');

-- Programa CL
PGM
    DCL VAR(&SQLCMD) TYPE(*CHAR) LEN(100)
    CHGVAR VAR(&SQLCMD) VALUE('SELECT * FROM DEPARTMENTS')
    RUNSQL SQL(&SQLCMD)
ENDPGM

Ejercicio 2: Copiar Resultados a un Archivo

Instrucciones:

  1. Crea una consulta QM que seleccione todos los registros de la tabla DEPARTMENTS.
  2. Escribe un programa CL que copie los resultados de la consulta a un archivo llamado DEPTRESULT.

Solución:

-- Crear la consulta QM (almacenada en MYLIB/QMQRY)
SELECT * FROM DEPARTMENTS;

-- Programa CL
PGM
    STRQMQRY QMQRY(MYLIB/DEPTQUERY)
    CPYFRMQRYF FROMOPNID(DEPTQUERY) TOFILE(MYLIB/DEPTRESULT)
ENDPGM

Conclusión

En este módulo, hemos aprendido cómo interactuar con bases de datos utilizando CL. Hemos cubierto los comandos básicos, ejemplos prácticos y ejercicios para reforzar los conceptos. Ahora deberías sentirte cómodo ejecutando consultas SQL y manipulando datos desde tus programas CL. En el próximo módulo, exploraremos cómo usar APIs para extender las capacidades de tus programas CL.

© Copyright 2024. Todos los derechos reservados