Ce chapitre décrit le paquetage SQL embarqué pour PostgreSQL™. Il a été écrit par Linus Tolke (<linus@epact.se>) et Michael Meskes (<meskes@postgresql.org>). Originellement, il a été écrit pour fonctionner avec le langage C. Il fonctionne aussi avec le C++, mais il ne reconnaît pas encore toutes les constructions C++.
Cette documentation est assez incomplète. Mais du fait de la standardisation de cette interface, des informations complémentaires sont disponibles au travers de nombreuses ressources traitant du SQL.
Un programme SQL embarqué consiste en du code écrit dans un langage de programmation ordinaire, le C dans le cas présent, mélangé à des commandes SQL incluses dans des sections spécialement marquées. Pour construire le programme, le code source est d'abord passé au préprocesseur SQL embarqué qui le convertit en un programme C ordinaire. Il peut alors être traité par un compilateur C.
Le SQL embarqué a des avantages par rapport aux autres méthodes de gestion de commandes SQL dans du code C. Premièrement, il gère le passage laborieux des informations de et vers les variables du programme C. Deuxièmement, le code SQL du programme est vérifié syntaxiquement au moment de la construction. Troisièmement, le SQL embarqué en C est spécifié dans le standard SQL et supporté par de nombreux systèmes de bases de données SQL. L'implantation PostgreSQL™ est conçue pour correspondre au mieux à ce standard. Il est de ce fait assez facile de porter les programmes SQL embarqués écrits pour d'autres bases de données SQL vers PostgreSQL™.
Comme indiqué précédemment, les programmes écrits pour l'interface SQL embarqué sont des programmes C normaux contenant un code spécial inséré pour réaliser les actions en relation avec la base de données. Ce code spécial a toujours la forme
EXEC SQL ...;
Ces instructions prennent syntaxiquement la place d'une instruction C. Suivant l'instruction particulière, elles peuvent apparaître dans le contexte global ou à l'intérieur d'une fonction. Les instructions SQL embarquées suivent les règles de sensibilité à la casse d'un code SQL normal, et non pas ceux du C.
Les sections suivantes expliquent toutes les instructions SQL embarquées.