ecpg — Préprocesseur C pour le SQL embarqué
ecpg
[option
...] fichier
...
ecpg
est le préprocesseur du SQL embarqué pour les
programmes écrits en C. Il convertit des programmes écrits en C contenant des instructions SQL
embarqué en code C normal. Pour se faire, les appels au SQL sont remplacés par des
appels spéciaux de fonctions. Les fichiers en sortie peuvent être traités
par n'importe quel compilateur C.
ecpg
convertit chaque fichier en entrée, donné sur la
ligne de commande, en un fichier C correspondant. Si le nom d'un fichier en
entrée n'a pas d'extension, .pgc
est supposé.
L'extension du fichier sera remplacée par .c
pour
construire le nom du fichier en sortie. Mais ce nom peut aussi être
surchargé en utilisant l'option -o
.
Si un nom de fichier en entrée est simplement -
,
ecpg
lit le source du programme à partir de l'entrée
standard (et écrit sur la sortie standard, sauf si ce comportement est
surchargé avec l'option -o
).
Cette page de référence ne décrit pas le langage SQL embarqué. Voir Chapitre 35 pour plus d'informations sur ce thème.
ecpg
accepte les arguments suivants en ligne de
commande :
-c
Engendre automatiquement du code C à partir de code SQL. Actuellement,
cela fonctionne pour EXEC SQL TYPE
.
-C mode
Initialise un mode de compatibilité. mode
peut être INFORMIX
ou INFORMIX_SE
.
-D symbol
Définit un symbole du préprocesseur C.
-h
Traite les fichiers d'en-tête. Quand cette option est utilisée,
l'extension du fichier en sortie devient .h
, et non
pas .c
, et l'extension par défaut du fichier en
entrée est .pgh
, et non pas .pgc
.
De plus, l'option -c
est forcée.
-i
Les fichiers d'en-tête du système sont également analysés.
-I répertoire
Spécifie un chemin d'inclusion supplémentaire, utilisé pour trouver les
fichiers inclus via EXEC SQL INCLUDE
. Par défaut, il
s'agit de .
(répertoire courant),
/usr/local/include
, du répertoire de fichiers entêtes de
PostgreSQL défini à la compilation (par défaut :
/usr/local/pgsql/include
), puis de
/usr/include
, dans cet ordre.
-o nom_fichier
Indique le nom du fichier de sortie, nom_fichier
,
utilisé par ecpg
.
Écrire -o -
pour envoyer toute la sortie sur la
sortie standard.
-r option
Sélectionne un comportement en exécution. option
peut avoir une des valeurs suivantes :
no_indicator
Ne pas utiliser d'indicateurs mais utiliser à la place des valeurs spéciales pour représenter les valeurs NULL. Historiquement, certaines bases de données utilisent cette approche.
prepare
Préparer toutes les instructions avant de les utiliser. Libecpg conservera un cache d'instructions préparées et réutilisera une instruction si elle est de nouveau exécutée. Si le cache est plein, libecpg libérera l'instruction la moins utilisée.
questionmarks
Autoriser les points d'interrogation comme marqueur pour des raisons de compatibilité. C'était la valeur par défaut il y a longtemps.
-t
Active la validation automatique (autocommit) des transactions. Dans ce
mode, chaque commande SQL est validée automatiquement, sauf si elle est à
l'intérieur d'un bloc de transaction explicite. Dans le mode par défaut,
les commandes ne sont validées qu'à l'exécution de
EXEC SQL COMMIT
.
-v
Affiche des informations supplémentaires dont la version et le chemin des entêtes.
--version
Affiche la version de ecpg et quitte.
-?
--help
Affiche l'aide sur les arguments en ligne de commande de ecpg et quitte.
Lors de la compilation de fichiers C prétraités, le compilateur a
besoin de trouver les fichiers d'en-tête ECPG
dans le répertoire des entêtes de PostgreSQL. De ce fait, il
faut généralement utiliser l'option -I
lors de l'appel du
compilateur (c'est-à-dire -I/usr/local/pgsql/include
).
Les programmes C qui utilisent du SQL embarqué doivent être liés
avec la bibliothèque libecpg
. Cela peut peut être
effectué, par exemple, en utilisant
les options de l'éditeur de liens -L/usr/local/pgsql/lib -lecpg
.
La valeur réelle des répertoires, fonction de l'installation, peut être obtenue par l'utilisation de la commande pg_config.
Soit un fichier source C contenant du SQL embarqué nommé
prog1.pgc
. Il peut être transformé en programme exécutable à l'aide des commandes suivantes :
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg