Documentation PostgreSQL 14.22 » Interfaces client » ECPG -- SQL embarqué en C » Le Concept

Précédent | Niveau supérieur | Suivant
Chapitre 36. ECPG -- SQL embarqué en C | Sommaire | 36.2. Gérer les Connexions à la Base de Données

## 36.1. Le Concept

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 36.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 serveur 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.