Partager via


Compilation d’un programme Embedded SQL

Étant donné qu’un programme SQL incorporé contient une combinaison d’instructions sql et de langage hôte, il ne peut pas être envoyé directement à un compilateur pour le langage hôte. Au lieu de cela, il est compilé par le biais d’un processus multistep. Bien que ce processus diffère du produit au produit, les étapes sont à peu près identiques pour tous les produits.

Cette illustration montre les étapes nécessaires pour compiler un programme SQL incorporé.

Steps to compile an embedded SQL program

Cinq étapes sont impliquées dans la compilation d’un programme SQL incorporé :

  1. Le programme SQL incorporé est soumis au précompileur SQL, un outil de programmation. Le précompileur analyse le programme, recherche les instructions SQL incorporées et les traite. Un précompileur différent est requis pour chaque langage de programmation pris en charge par le SGBD. Les produits SGBD offrent généralement des précompileurs pour une ou plusieurs langues, notamment C, Pascal, COBOL, Fortran, Ada, PL/I et divers langages d’assembly.

  2. Le précompileur produit deux fichiers de sortie. Le premier fichier est le fichier source, supprimé de ses instructions SQL incorporées. À leur place, le précompileur remplace les appels aux routines SGBD propriétaires qui fournissent le lien d’exécution entre le programme et le SGBD. En règle générale, les noms et les séquences d’appel de ces routines sont connus uniquement pour le précompileur et le SGBD ; ils ne sont pas une interface publique au SGBD. Le deuxième fichier est une copie de toutes les instructions SQL incorporées utilisées dans le programme. Ce fichier est parfois appelé module de demande de base de données ou DBRM.

  3. La sortie du fichier source du précompileur est soumise au compilateur standard pour le langage de programmation hôte (par exemple, un compilateur C ou COBOL). Le compilateur traite le code source et produit du code objet comme sortie. Notez que cette étape n’a rien à voir avec le SGBD ou sql.

  4. L’éditeur de liens accepte les modules objet générés par le compilateur, les lie à différentes routines de bibliothèque et produit un programme exécutable. Les routines de bibliothèque liées au programme exécutable incluent les routines SGBD propriétaires décrites à l’étape 2.

  5. Le module de requête de base de données généré par le précompileur est soumis à un utilitaire de liaison spécial. Cet utilitaire examine les instructions SQL, analyse, valide et les optimise, puis produit un plan d’accès pour chaque instruction. Le résultat est un plan d’accès combiné pour l’ensemble du programme, représentant une version exécutable des instructions SQL incorporées. L’utilitaire de liaison stocke le plan dans la base de données, en lui attribuant généralement le nom du programme d’application qui l’utilisera. Si cette étape a lieu au moment de la compilation ou de l’exécution dépend du SGBD.

Notez que les étapes utilisées pour compiler un programme SQL incorporé sont étroitement liées aux étapes décrites précédemment dans Traitement d’une instruction SQL. Notez en particulier que le précompileur sépare les instructions SQL du code du langage hôte, et que l’utilitaire de liaison analyse et valide les instructions SQL et crée les plans d’accès. Dans les SGBD où l’étape 5 a lieu au moment de la compilation, les quatre premières étapes de traitement d’une instruction SQL ont lieu au moment de la compilation, tandis que la dernière étape (exécution) a lieu au moment de l’exécution. Cela a pour effet de rendre l’exécution des requêtes dans ces SGBD très rapidement.