152
Chapitre 6 • SQL avancé
6.9 LES INTERFACES ENTRE BD ET PROGRAMMES
D’APPLICATION
En principe, toute commande SQL peut être transmise au SGBD SQL par un
programme d'application en vue de son exécution immédiate. Dans ce cas, les
instructions SQL auront été incorporées dans le programme 18 selon des règles que
nous allons décrire brièvement. Etant donné la nature séquentielle des langages de
programmation classiques (COBOL, C, Java, Basic, etc.), un protocole de communication spécifique a été établi entre le programme d'application et le SGBD. Il
concerne d'une part les échanges entre ces derniers, et d'autre part le mode d'interaction entre un résultat ensembliste (le SGBD fournit une table en réponse à une
requête d'extraction) et un programme itératif.
a) Extraction des données
En ce qui concerne l'extraction des données, le programme doit pouvoir traiter
chaque ligne du résultat en séquence. D'autre part il doit pouvoir passer des valeurs
de paramètres en argument d'une commande, et recevoir les valeurs d'une ligne de
résultat dans des variables qui lui sont propres. Il existe donc des structures de
contrôle et des conventions de communication liées à l'utilisation d'une base de
données SQL par un programme d'application.
Du point de vue syntaxique, il existe quelques conventions d'écriture. Elles sont
liées au mode de traduction d'un programme : celui-ci est généralement traité par un
préprocesseur SQL qui transforme les ordres SQL en appels à des procédures
système. Le programme peut alors être compilé et relié d'une manière traditionnelle.
En outre, ce préprocesseur effectue des vérifications de conformité des ordres par
rapport aux définitions qui sont enregistrées dans le dictionnaire de données (en
particulier les privilèges); il met également ce dernier à jour.
Nous préciserons les conventions qui sont d'application pour les langages tels que
COBOL. Elles sont très semblables pour C ou PASCAL. Le cas de Java est un peu
particulier, dans la mesure où ce langage dispose de ses propres protocoles d'interaction avec les SGBD SQL (JDBC ou SQLJ).
1. Tout ordre SQL doit être précédé de exec SQL et clôturé par end-exec.
2. Les variables qui interviennent dans une commande SQL, soit comme arguments, soit comme résultats, doivent être déclarées dans un bloc délimité par
les instructions :
exec SQL begin declare section end-exec.
et
exec SQL end declare section end-exec.
3. Les communications entre le programme et le SGBD SQL utilisent certaines
variables système (dont SQLCODE) qu'il faut déclarer, ou que l'on peut faire in18. D’où l’appellation ESQL, ou embedded SQL, par opposition à ISQL, ou interactive SQL, que
nous avons considéré jusqu’ici.
Précédent

- 152/436

Suivant