Introducción a SQL
S Q L 
(Structured Query Language
Lenguaje de consulta estructurado).


Introducción.

Debido a la existencia en el mercado de una gran variedad de Bases de Datos Relacionales, así como, de versiones y dialectos de COBOL, estos capítulos dedicados a tratar el acceso a los datos a través de SQL y COBOL no profundizarán en los detalles de cada uno de ellos, sino que pretenden ser una guía para aquellos que empiezan a desarrollar sus programas uniendo la potencia de acceso a datos de SQL y la ventaja de la manipulación de grandes volúmenes de información que provee el COBOL, como siempre ante una duda, remitiros al manual específico del fabricante o proveedor de cada producto.

Qué es SQL.

Desarrollado por los laboratorios de IBM durante 1974-1978, es un lenguaje autosuficiente y siempre está asociado al Gestor de la Base de Datos (DBMS). Dependiendo del fabricante podremos encontrar el SQL como manipulador de las Bases de Datos en INFORMIX, ORACLE, ACCESS, DB2, RUSHMORE, entre otras ... El SQL permite reducir el tiempo requerido para:

  • Organizar
  • Almacenar
  • Recuperar
  • Sumarizar
  • Agrupar
  • Formatear
... la información.


El SQL está dividido en tres componentes principales:

DML - Data Manipulation Language (Lenguaje de Manipulación de Datos): Contiene los componentes del lenguaje para la manipulación de la información almacenada en las tablas. Las sentencias de este componente cuando se incluyen dentro de un programa de aplicación reciben el nombre de “SQL embebido ó inmerso” y al DML se le denomina “DML dinámico”. Las sentencias del DML dinámico son sentencias SQL definidas durante el tiempo de ejecución del programa y que generalmente varían en las distintas ejecuciones, sin embargo el DML dinámico no es aún parte del standard y las sentencias pueden variar según las distintas implementaciones de cada fabricante.

DCL - Data Control Language (Lenguaje de Control de Datos): Incluye la sintaxis comúnmente utilizada para definir, modificar o borrar las tablas en las que se almacenan los datos. Esta parte es una de las que más varía según las distintas implementaciones de los distintos fabricantes.

DDL - Data Definition Language (Lenguaje de Definición de Datos): Contiene elementos útiles para trabajar en un entorno multiusuario en el que es importante la protección de la información, la seguridad de las tablas y el establecimiento de restricciones de acceso.

Lenguaje de Manipulación de Datos.

EXEC SQL
......
......
...... 
END-EXEC.


Descripción:
Indica el comienzo de una sentencia SQL inmersa en un programa de aplicación. Todas las sentencias SQL incluidas en un programa de aplicación requieren este prefijo de sentencia. Mediante este prefijo le indicamos al compilador y al runtime que las sentencias incluidas entre los dos prefijos, no corresponden al lenguaje COBOL, sino que serán interpretadas y ejecutadas por el SGBD.

En la mayoría de las implementaciones, las palabras EXEC SQL deben aparecer juntas en una única línea del código del programa. La sentencia SQL que aparezca entre EXC SQL .... END-EXEC puede escribirse detrás del delimitador EXEC SQL o al comienzo de una nueva línea.

En algunas implementaciones no es necesario el punto final de la instrucción END-EXEC.

Ejemplo:

EXEC SQL DELETE * FROM CLIENTES END-EXEC. 
EXEC SQL 
          DELETE * FROM CLIENTES END-EXEC. 
EXEC SQL
          DELETE * FROM CLIENTES
END-EXEC.

INCLUDE [SQLCA | SQLDA | nombre de miembro]

Descripción:
Es una directiva del compilador, genera dentro del código fuente de una aplicación, estructuras de datos que definen el formato del  rea de comunicaciones SQL (SQL Communications Area) o del  rea de descripciones SQL (SQL Descriptor Area), o bien, copia la estructura de datos especificada por nombre de miembro de la librería fuente a la que accede el precompilador de SQL. Su acción es igual a la sentencia COPY nombre fuente de COBOL, su diferencia estriba en que en programas de aplicación que usen acceso a datos a través de SQL no podremos hacer uso de la sentencia COPY.

Esta sentencia se utiliza solo dentro de un programa de aplicación y dentro del prefijo EXEC SQL .... END-EXEC y en la DATA DIVISION.

El formato de la SQLCA es espec¡fico de cada implementación, pero generalmente contiene la variable SQLCODE que se puede usar para comprobar la correcta terminación de los comandos SQL. Esta variable vendría a ser la homónima de FILE-STATUS de COBOL. Por convenio, el valor 0 (cero) de la variable SQLCODE indica una finalización correcta, y el valor +100 indica que no se encontraron filas o el final de un conjunto. El resto de códigos es específico de cada implementación, normalmente los códigos con signo "-" (negativo) son errores de compilación del precompilador SQL, y los códigos con signo (+) (positivo) son errores de acceso a datos.

En algunas implementaciones, el precompilador genera de forma automática una SQLCA dentro de la WORKING-STORAGE, sino se ha incluido ninguna directiva INCLUDE SQLCA.

El formato de la SQLDA es específico de cada implementación, algunas no permiten la directiva INCLUDE SQLDA dentro de un programa COBOL, en otras tanto el SQLCA como el SQLDA, son considerados como nombre de miembro y por consiguiente su estructura estar  definida como un registro en la librería de fuentes.

Ejemplo:

WORKING-STORAGE SECTION. 
EXEC SQL 
           INCLUDE SQLCA 
END-EXEC. 

EXEC SQL
           INCLUDE SQLDA 
END-EXEC.



Este artículo proviene de Cobol en español
http://www.escobol.com

La dirección de esta noticia es:
http://www.escobol.com/modules.php?name=Sections&op=viewarticle&artid=30