
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.
|
|