Compartir vía


Compilar un programa SQL incrustado

Dado que un programa SQL incrustado contiene una combinación de instrucciones de lenguaje SQL y host, no se puede enviar directamente a un compilador para el lenguaje host. En su lugar, se compila a través de un proceso de varios pasos. Aunque este proceso difiere del producto al producto, los pasos son aproximadamente los mismos para todos los productos.

En esta ilustración se muestran los pasos necesarios para compilar un programa SQL incrustado.

Pasos para compilar un programa SQL incrustado

Cinco pasos están implicados en la compilación de un programa SQL insertado:

  1. El programa SQL incrustado se envía al precompilador de SQL, una herramienta de programación. El precompilador examina el programa, busca las instrucciones SQL insertadas y las procesa. Se requiere un precompilador diferente para cada lenguaje de programación compatible con DBMS. Los productos DBMS suelen ofrecer precompiladores para uno o varios lenguajes, incluidos C, Pascal, COBOL, Fortran, Ada, PL/I y varios lenguajes de ensamblado.

  2. El precompilador genera dos archivos de salida. El primer archivo es el archivo de origen, quitado de sus instrucciones SQL incrustadas. En su lugar, el precompilador sustituye las llamadas a rutinas de DBMS propietarias que proporcionan el vínculo en tiempo de ejecución entre el programa y el DBMS. Normalmente, los nombres y las secuencias de llamada de estas rutinas solo se conocen con el precompilador y el DBMS; no son una interfaz pública para el DBMS. El segundo archivo es una copia de todas las instrucciones SQL insertadas usadas en el programa. Este archivo a veces se denomina módulo de solicitud de base de datos o DBRM.

  3. La salida del archivo de origen del precompilador se envía al compilador estándar para el lenguaje de programación host (como un compilador de C o COBOL). El compilador procesa el código fuente y genera el código de objeto como salida. Tenga en cuenta que este paso no tiene nada que ver con DBMS o con SQL.

  4. El enlazador acepta los módulos de objeto generados por el compilador, los vincula con varias rutinas de biblioteca y genera un programa ejecutable. Las rutinas de biblioteca vinculadas al programa ejecutable incluyen las rutinas de DBMS propietarias descritas en el paso 2.

  5. El módulo de solicitud de base de datos generado por el precompilador se envía a una utilidad de enlace especial. Esta utilidad examina las instrucciones SQL, analiza, valida y optimiza y, a continuación, genera un plan de acceso para cada instrucción. El resultado es un plan de acceso combinado para todo el programa, que representa una versión ejecutable de las instrucciones SQL insertadas. La utilidad de enlace almacena el plan en la base de datos, normalmente asignando el nombre del programa de aplicación que lo usará. Si este paso tiene lugar en tiempo de compilación o tiempo de ejecución depende del DBMS.

Tenga en cuenta que los pasos que se usan para compilar un programa SQL incrustado se correlacionan muy estrechamente con los pasos descritos anteriormente en Procesamiento de una instrucción SQL. En concreto, observe que el precompilador separa las instrucciones SQL del código del lenguaje host y la utilidad de enlace analiza y valida las instrucciones SQL y crea los planes de acceso. En DBMSs donde se realiza el paso 5 en tiempo de compilación, los cuatro primeros pasos de procesamiento de una instrucción SQL tienen lugar en tiempo de compilación, mientras que el último paso (ejecución) tiene lugar en tiempo de ejecución. Esto tiene el efecto de realizar la ejecución de consultas en tales DBMSs muy rápido.