Pour inclure un fichier externe dans un programme SQL embarqué, il suffit d'utiliser :
EXEC SQL INCLUDE nomfichier;
Le préprocesseur du SQL embarqué cherchera un fichier nommé nomfichier.h, le traitera et l'inclura dans la sortie C résultante. Du coup, les instructions C embarquées du fichier inclus sont gérées correctement.
Il est à noter que ceci n'est pas la même chose que
#include <nomfichier.h>
parce que ce fichier ne sera pas sujet au pré-traitement des commandes SQL. Naturellement, la directive C #include peut toujours être utilisée pour inclure d'autres fichiers d'en-tête.
            Le nom du fichier inclus est sensible à la casse, même si le reste de la commande EXEC SQL INCLUDE suit les règles habituelles de sensibilité à la casse.
Le SQL embarqué à un concept similaire à la directive #define qui est connu des développeurs C :
EXEC SQL DEFINE nom; EXEC SQL DEFINE nom valeur;
Donc, vous pouvez définir un nom :
EXEC SQL DEFINE HAVE_FEATURE;
Et vous pouvez aussi définir des constantes :
EXEC SQL DEFINE MON_NOMBRE 12; EXEC SQL DEFINE MA_CHAINE 'abc';
Utilisez undef pour supprimer une définition précédente :
EXEC SQL UNDEF MON_NOMBRE;
Bien sûr, vous pouvez continuer à utiliser les versions C de #define et #undef dans votre programme qui embarque du SQL. La différence réside dans le point que vos valeurs définies seront évaluées. Si vous utilisez EXEC SQL DEFINE alors le préprocessus ecpg évaluera les définitions et y substituera les valeurs. Par exemple, si vous écrivez :
EXEC SQL DEFINE MON_NOMBRE 12; ... EXEC SQL UPDATE Tbl SET col = MON_NOMBRE;
alors ecpg fera déjà la substitution et votre compilateur C ne verra aucun nom ou identifiant MON_NOMBRE. Notez que vous ne pouvez pas utiliser #define pour une constante que vous allez utiliser dans une requête SQL embarquée car, dans ce cas, le précompilateur ecpg n'est pas capable de voir cette déclaration.
Vous pouvez utiliser les directives suivantes pour compiler des sections de code de façon conditionnelle :
Vérifie un nom et traite les lignes suivantes si nom a été créé avec EXEC SQL define nom.
Vérifie un nom et traite les lignes suivantes si nom n'a pas été créé avec EXEC SQL define nom.
Commence le traitement d'une section alternative à une section introduite avec soit EXEC SQL ifdef nom ou EXEC SQL ifndef nom.
Vérifie nom et commence le traitement d'une section alternative si nom a été créé avec EXEC SQL define nom.
Termine une section alternative.
Exemple :
exec sql ifndef TZVAR; exec sql SET TIMEZONE TO 'GMT'; exec sql elif TZNAME; exec sql SET TIMEZONE TO TZNAME; exec sql else; exec sql SET TIMEZONE TO TZVAR; exec sql endif;