7.4 La génération de code
183
© Dunod – La photocopie non autorisée est un délit.
Pour en savoir plus
Le domaine des bases de données temporelles a été largement exploré. En raison des
déficiences des SGBD relationnels classiques, on a notamment proposé une extension du langage SQL (TSQL2) prenant en charge les aspects temporels, ainsi que
des structures de données physiques améliorant les performances des principaux
opérateurs de manipulation de données temporelles. Le lecteur intéressé consultera
par exemple [Snodgrass, 2000], qui est sans doute l’ouvrage le plus complet à
l’heure actuelle. Une étude de cas complète est disponible dans [Hainaut, 2001a].
Le lecteur y trouvera le développement en InterBase des principaux opérateurs de
projection, coalescing, jointure et agrégation, à la fois sous forme prédicative et
procédurale, ainsi que les déclencheurs de gestion des deux types de temps (validité
et transaction).
7.4 LA GÉNÉRATION DE CODE
Les requêtes SFW, qui produisent des tables formées de lignes de données, peuvent
tout aussi bien produire de simples lignes de texte, qui ne sont rien d’autre que des
valeurs de type character. Rien n’empêche d’ailleurs que ces lignes représentent
des instructions dans un langage informatique quelconque, ce qu’on appelle du
code. La génération de code à l’aide de requêtes SQL, qui, nous allons le voir, ne
pose pas de difficulté majeure, permet de comprendre des mécanismes et des
processus extrêmement importants en informatique moderne, et notamment dans les
applications web, dont un des mécanismes fondamentaux est la génération de pages
HTML. Nous commencerons par une application très simple pour évoluer progressivement vers des exemples un peu plus exigeants mais plus intéressants.
7.4.1 Migration de données
Posons le problème comme suit : nous disposons d’une table de données (soit
DETAIL pour les besoins de la discussion) gérée par un SGBD et nous désirons
transmettre son contenu vers un autre SGBD. Il est inutile de préciser que les deux
formats d’implémentation sont incompatibles. Le problème serait résolu si nous
disposions des instructions insert into correspondant au contenu de la première
table. En effet, le format de ces instructions est (raisonnablement) indépendant du
SGBD.
La requête ci-dessous, soumise au SGBD source, construit des lignes qui forment
de telles instructions. Il suffit de les rediriger vers un fichier texte et de les soumettre
au SGBD cible 15 .
15. La quadruple apostrophe est en fait une chaîne formée de deux apostrophes, elles-mêmes
délimitées, comme toute chaîne constante, par deux apostrophes. Dans ce contexte quelque peu
apostrophant, une double apostrophe indique un caractère apostrophe et non deux délimiteurs.
L’ensemble produit donc le caractère apostrophe. Dans certains SGBD tels que Access, on
définira plutôt ce caractère par la fonction chr$(39).
183
© Dunod – La photocopie non autorisée est un délit.
Pour en savoir plus
Le domaine des bases de données temporelles a été largement exploré. En raison des
déficiences des SGBD relationnels classiques, on a notamment proposé une extension du langage SQL (TSQL2) prenant en charge les aspects temporels, ainsi que
des structures de données physiques améliorant les performances des principaux
opérateurs de manipulation de données temporelles. Le lecteur intéressé consultera
par exemple [Snodgrass, 2000], qui est sans doute l’ouvrage le plus complet à
l’heure actuelle. Une étude de cas complète est disponible dans [Hainaut, 2001a].
Le lecteur y trouvera le développement en InterBase des principaux opérateurs de
projection, coalescing, jointure et agrégation, à la fois sous forme prédicative et
procédurale, ainsi que les déclencheurs de gestion des deux types de temps (validité
et transaction).
7.4 LA GÉNÉRATION DE CODE
Les requêtes SFW, qui produisent des tables formées de lignes de données, peuvent
tout aussi bien produire de simples lignes de texte, qui ne sont rien d’autre que des
valeurs de type character. Rien n’empêche d’ailleurs que ces lignes représentent
des instructions dans un langage informatique quelconque, ce qu’on appelle du
code. La génération de code à l’aide de requêtes SQL, qui, nous allons le voir, ne
pose pas de difficulté majeure, permet de comprendre des mécanismes et des
processus extrêmement importants en informatique moderne, et notamment dans les
applications web, dont un des mécanismes fondamentaux est la génération de pages
HTML. Nous commencerons par une application très simple pour évoluer progressivement vers des exemples un peu plus exigeants mais plus intéressants.
7.4.1 Migration de données
Posons le problème comme suit : nous disposons d’une table de données (soit
DETAIL pour les besoins de la discussion) gérée par un SGBD et nous désirons
transmettre son contenu vers un autre SGBD. Il est inutile de préciser que les deux
formats d’implémentation sont incompatibles. Le problème serait résolu si nous
disposions des instructions insert into correspondant au contenu de la première
table. En effet, le format de ces instructions est (raisonnablement) indépendant du
SGBD.
La requête ci-dessous, soumise au SGBD source, construit des lignes qui forment
de telles instructions. Il suffit de les rediriger vers un fichier texte et de les soumettre
au SGBD cible 15 .
15. La quadruple apostrophe est en fait une chaîne formée de deux apostrophes, elles-mêmes
délimitées, comme toute chaîne constante, par deux apostrophes. Dans ce contexte quelque peu
apostrophant, une double apostrophe indique un caractère apostrophe et non deux délimiteurs.
L’ensemble produit donc le caractère apostrophe. Dans certains SGBD tels que Access, on
définira plutôt ce caractère par la fonction chr$(39).
