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 35.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écifique 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 C. De plus, ils permettent des commentaires imbriqués comme en C, qui font partie du standard SQL. Néanmoins, la partie C du programme suit le standard C de ne pas accepter des commentaires imbriqués.
Les sections suivantes expliquent tous les ordres SQL embarqués.