4.11. SQL INTÉGRÉ {S10}
109
Cette étape permet de créer le fichier prog.o. Les fichiers sources en C générés incluent les fichiers d’en-
tête provenant de l’installation de PostgreSQL. Si vous avez installé PostgreSQL à un emplacement qui
n’est pas parcouru par défaut, vous devez ajouter une option comme -I/usr/local/pgsql/include sur
la ligne de commande de la compilation.
Vous devez enfin lier le programme avec la bibliothèque libecpg qui contient les fonctions néces-
saires. Ces fonctions récupèrent l’information provenant des arguments, exécutent la commande SQL
en utilisant l’interface libpq et placent le résultat dans les arguments spécifiés pour la sortie. Pour lier
un programme SQL embarqué, vous devez donc inclure la bibliothèque libecpg :
cc -o monprog prog.o -lecpg
De nouveau, vous pourriez avoir besoin d’ajouter une option comme -L/usr/local/pgsql/lib sur la
ligne de commande.
4.11.9 Exemple complet
Voici un exemple complet qui effectue les opérations suivantes :
– connexion à la base ;
– vérification de la réussite de la connexion ;
– affichage du contenu de la table individu en utilisant un curseur ;
– fermeture de la connexion.
#include <stdio.h>
// ____ pour gérer les erreurs
EXEC SQL INCLUDE sqlca;
// ____ Définition des variables hôtes
EXEC SQL BEGIN DECLARE SECTION;
char var_nom[256];
char var_prenom[256];
int var_num;
EXEC SQL END DECLARE SECTION;
int main(void){
// ____ Ouverture de la connexion à la base de données
EXEC SQL CONNECT TO nom_base@aquanux;
if(sqlca.sqlcode) {
printf("erreur %s\n",sqlca.sqlerrm.sqlerrmc);
exit(0);
}
printf(" connexion réussie \n");
// ____ Utilisation d’un curseur pour afficher le contenu de la table individu
EXEC SQL DECLARE curseur_individu CURSOR FOR
SELECT num_individu, nom, prenom FROM individu;
EXEC SQL OPEN curseur_individu;
// Boucle d’affichage
while(SQLCODE==0) {
EXEC SQL FETCH FROM curseur_individu INTO :var_num, :var_nom, :var_prenom;
printf("L’i-ndividu %d est %s %s\n", var_num, var_prenom, var_nom);
}
EXEC SQL CLOSE curseur_individu;
// ____ Fermetu