Un précompilateur est un outil de développement ORACLE (au même titre que SQL*Forms ou SQL*Plus, par exemple) qui permet d'écrire des applications en langage évolué incluant des ordres SQL. Le précompilateur va permettre un accès simple aux fonctions d'ORACLE à l'intérieur d'un programme en langage classique : C ou Cobol par exemple. Un ordre SQL sera en fait traduit automatiquement en un ensemble de routines élémentaires.
Langages supportés
Les langages de 3ème génération actuellement supportés (pour lesquels il existe un précompilateur...) sont les suivants : - ADA, C, COBOL, FORTRAN, PASCAL, PL1 Les précompilateurs correspondant ont respectivement pour nom : PRO*Ada, PRO*C, PRO*COBOL, PRO*FORTRAN, PRO*PASCAL et PRO*PL1. Remarque : Pour pouvoir utiliser l'interface de programmation d'ORACLE, trois composants logiciels sont au minimum nécessaires : - Un SGBD Oracle (Noyau V6 ou V7) - Un compilateur supporté par ORACLE - Le précompilateur correspondant Attention tous les compilateurs ne sont pas forcément supportés, mais la plupart des standards du marché le sont. Principes On inclura directement dans le source des "Macros-commandes" SQL, indépendamment de la syntaxe et du Vocabulaire du langage hôte.
Exemple
:
main() {
/* ici quelques instructions C */
...
puts("je vais faire une insertion...");
EXEC SQL INSERT INTO EMP(EMPNO) VALUES (1111);
/* ceci est pratiquement du SQl pur et dur */
...
/* ici d'autres instructions C .. */ }
Il est clair qu'un compilateur
ne supportera pas une syntaxe étrangère, il est donc nécessaire
de traiter ce source préalablement à la compilation. C'est le
rôle du précompilateur. Les
opérations vont s'enchaîner de la façon suivante :
1) Edition d'un 'pré source' (Programme source incluant ordres SQL
et instructions standards du L3G),
2) Precompilation,
3) Compilation,
4) Edition des liens (avec utilisation des bibliothèques fournies
par ORACLE),
5) Execution.
On intercale simplement une phase de précompilation à la chaîne classique de programme. Le précompilateur substituera à l'ordre SQL rencontré les déclarations et appels de routines compatibles avec le langage et nécessaires à l'exécution de cet ordre. Pour une comparaison de la chaîne de production de programme standard et de celle utilisant PRO
Environnement pratique de travail
Après édition du source (avec notre éditeur préféré), on appellera le précompilateur par la commande adéquate. Traditionnellement les 'pré-sources' ont une extension (ou type de fichier) préfixé par P (comme PRO). Ainsi le fichier "essai.pc" sera un pré-source C, ESSAI.PCO un pré-source COBOL, etc.
Exemple de commande de précompilation : $PROC iname = ESSAI.PC
PROC est la commande d'appel du précompilateur C sur notre système, et on lui donne au minimum le nom du pré-source à précompiler (grâce à l'option iname=nom_presource). (Pour plus de détails, voir en 8.1. les différentes options de précompilation). On pourra ensuite compiler et éditer les liens avec la bibliothèque de routines oracle et la bibliothèque standard. Des procédures de commandes, shell scripts, Make files (suivant les systèmes d'exploitations) sont livrées pour produire facilement un exécutable.Avantages offerts par le précompilateur
Outre le fait d'utiliser toutes les possibilités d'un L3G et la simplicité des requêtes SQL, l'interface PRO offre les avantages suivants : - Normalisation des ordres SQL (ANSI et ISO) - Conversion automatique des types internes d'ORACLE vers les types de données standard du langage utilisé - utilisation performante de blocs PL/SQL - utilisation de variables de réception structurées (tableaux) - accès simultané à plusieurs bases locales ou distantes - interfaçage avec SQL*Forms
Le SQL inclus
L'expression SQL inclus est une traduction libre du terme embedded SQL directement issu de la norme SQL ANSI. Cette notion de SQL inclus n'est donc pas spécifique à PRO, bien au contraire, puisqu'elle fait partie de la norme. PRO est plus exactement l'outil permettant d'écrire du SQL inclus au sein d'une application hôte écrite en langage de 3eme génération, avec ORACLE. Pour mémoire, la définition donnée dans la norme ANSI est la suivante : "...An embedded SQL host program is an application program that consists of programming language text and SQL text..." soit littéralement : "...Un programme hôte utilisant du SQL inclus est une application composée de texte provenant du langage de programmation et de texte SQL..." Nous envisagerons au chapitre suivant, comment PRO implémente le SQL inclus et plus particulièrement les différences minimes entre la syntaxe d'un ordre SQL interactif et un ordre inclus. Au sein d'un programme PRO, outre les commandes classiques de consultation et de mise à jour, on pourra donc utiliser n'importe lequel des verbes SQL listés dans le tableau suivant :
LISTE DES VERBES SQL AUTORISES DANS VOTRE APPLICATION | ||||||
ALTER | COMMIT | CREATE | DELETE | |||
DROP | GRANT | INSERT | LOCK TABLE | |||
RENAME | REVOKE | ROLLBACK | SAVEPOINT | |||
SELECT | SET TRANSACTION | UPDATE |
…
…
Copyright (c) 2000
- Didier Deleglise voir conditions d'utilisation de ce document. |