Un programme SQL embarqué est composé de code écrit dans un langage de
programmation ordinaire, dans notre cas le C, mélangé avec des commandes SQL
dans des sections spécialement balisées. Pour compiler le programme,
le code source (*.pgc
) passe d'abord dans un préprocesseur
pour SQL embarqué, qui le convertit en un programme C ordinaire (*.c
),
afin qu'il puisse ensuite être traité par un compilateur C. (Pour les détails sur la compilation
et l'édition de lien dynamique voyez Section 34.10).
Les applications ECPG converties appellent les fonctions de la librairie libpq au travers
de la librairie SQL embarquée (ecpgli), et communique avec le server PostgreSQL au travers du
protocole client-serveur normal.
Le SQL embarqué a des avantages par rapport aux autres méthodes de manipulation du SQL dans le code C. Premièrement, il s'occupe du laborieux passage d'information de et vers les variables de votre programme C. Deuxièmement, le code SQL du programme est vérifié à la compilation au niveau syntaxique. Troisièmement, le SQL embarqué en C est supporté par beaucoup d'autres bases de données SQL. L'implémentation PostgreSQL est conçue pour correspondre à ce standard autant que possible, et il est habituellement possible de porter du SQL embarqué d'autres bases SQL vers PostgreSQL assez simplement.
Comme déjà expliqué précédemment, les programmes écrits pour du SQL embarqué sont des programmes C normaux, avec du code spécifique inséré pour exécuter des opérations liées à la base de données. Ce code spécial est toujours de la forme :
EXEC SQL ...;
Ces ordres prennent, syntaxiquement, la place d'un ordre SQL. En fonction de l'ordre lui-même, ils peuvent apparaître au niveau global ou à l'intérieur d'une fonction.
Les ordres SQL embarqués suivent les règles habituelles
de sensibilité à la casse du code SQL, et pas celles du
langage C. De plus, elles permettent des commentaires imbriqués comme dans
le standard SQL. Néanmoins, la partie C du programme suit le standard C de
ne pas accepter des commentaires imbriqués. Les ordres
SQL embarqués utilisent des règles SQL, et non pas des
règles en C, pour analyser les chaînes placées entre guillemets et les
identifiants.(Voir respectivement Section 4.1.2.1 et
Section 4.1.1. Notez que ECPG assume que
standard_conforming_strings
vaut
on
.) Bien sûr, la partie de C du programme suit les
règles C de mise entre guillemets.
Les sections suivantes expliquent tous les ordres SQL embarqués.