Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL POSTGRESQL FORUM POSTGRESQL F.A.Q POSTGRESQL UDF POSTGRESQL LIVRES POSTGRESQL

31.13. Traiter les programmes en SQL embarqué

Après avoir vu comment former des programmes C incluant du SQL embarqué, il est tout aussi intéressant de savoir comment les compiler. Avant d'être compilé, le fichier est passé au travers du préprocesseur C pour le SQL embarqué. Ce préprocesseur, appelé aussi précompilateur, convertit les instructions SQL utilisées en appels de fonctions spéciales. Après compilation, le programme doit être lié avec une bibliothèque spéciale contenant les fonctions nécessaires. Ces fonctions traitent l'information issues des arguments, exécutent la commande SQL via l'interface libpq et placent le résultat dans les arguments indiqués pour la sortie.

Le préprocesseur, appelé ecpg, est inclus dans toute installation standard de PostgreSQL™. Les programmes en SQL embarqué sont nommés typiquement avec une extension .pgc. Un fichier programme nommé prog1.pgc peut être passé au préprocesseur par la simple commande

ecpg prog1.pgc

Ceci crée un fichier nommé prog1.c. Si les fichiers en entrée ne suivent pas le modèle de nommage suggéré, il est possible de nommer explicitement le fichier de sortie en utilisant l'option -o.

Le fichier traité par le préprocesseur peut être compilé normalement. Par exemple :

cc -c prog1.c

Les fichiers sources en C engendrés incluent les fichiers d'en-tête provenant de l'installation de PostgreSQL™. De ce fait, si PostgreSQL™ a été installé à un emplacement qui n'est pas parcouru par défaut, il faut ajouter une option comme -I/usr/local/pgsql/include sur la ligne de commande de la compilation.

Pour lier un programme SQL embarqué, il faut inclure la bibliothèque libecpg de cette façon :

cc -o monprog prog1.o prog2.o ... -lecpg

Là encore, il peut être nécessaire d'ajouter une option comme -L/usr/local/pgsql/lib sur la ligne de commande.

Si le processus de construction d'un grand projet est géré avec make, il peut être plus pratique d'inclure la règle implicite suivante dans les fichiers makefile :

ECPG = ecpg

%.c: %.pgc
        $(ECPG) $<

La syntaxe complète de la commande ecpg est détaillée dans ecpg (1).

La bibliothèque ecpg est compatible avec les threads si elle a été compilée en utilisant l'option en ligne de commande --enable-thread-safety de configure. (Il peut s'avérer nécessaire de préciser d'autres options de threading sur la ligne de commande pour compiler le code client.)

Responsable bénévole de la rubrique PostgreSQL : Damien Griessinger (HpAlpha) - Contacter par EMail :
Vos questions techniques : forum d'entraide PostgreSQL - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.