| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
ecpg [-v] [-t] [-I include-path] [-o outfile] file...
ecpg accepte les arguments en ligne de commande suivants :
Affiche l'information sur la version.
Active l'auo-validation des transactions. Dans ce mode, chaque requête est automatiquement validée à moins qu'elle soit incluse dans un bloc de transaction explicite. Dans le mode par défaut, les requêtes sont validées seulement quand exec sql commit est utilisé.
Spécifie un chemin additionnel. Par défaut c'est . (répertoire courant), /usr/local/include, le chemin PostgreSQL défini lors de la compilation defined at compile time (par défaut : /usr/local/pgsql/include), et /usr/include.
Spécifie que ecpg écrira toutes ses sorties dans outfile. Si aucune option supplémentaire n'est fournie la sortie sera écrite dans name.c, supposant que le fichier d'entrée était nommé name.pgc. Si le fichier d'entrée a le suffixe .pgc attendu, le fichier sortie aura .pgc attaché au nom de fichier d'entrée.
Les fichiers à traiter.
ecpg est un préprocesseur SQL embarqué pour le langage C et PostgreSQL. Il permet le développement de programmes en C avec le code SQL embarqué.
Linus Tolke (<linus@epact.se>) fut l'auteur à l'origine de ecpg (jusqu'à la version 0.2). Michael Meskes (<meskes@debian.org>) est l'auteur et mainteneur actuel de ecpg. Thomas Good (<tomg@q8.nrnet.org>) est l'auteur de la dernière révision des pages de manuel de ecpg, sur lesquelles ce document est fondé.
Un fichier source SQL embarqué doit être pré-traité avant compilation :
ecpg [ -d ] [ -o file ] file.pgc |
Vous pouvez vouloir rediriger la sortie préprocesseur vers un fichier de log.
Le préprocesseur ajoutera deux directives à la source :
#include <ecpgtype.h> #include <ecpglib.h> |
Les variables déclarées dans le code source ecpg doivent être précédées par :
EXEC SQL BEGIN DECLARE SECTION; |
De façon similaire, les sections de déclaration de variable doivent se terminer par :
EXEC SQL END DECLARE SECTION; |
![]() | Avant la version 2.1.0, devait être déclarée sur un ligne séparée. Depuis la version 2.1.0 de multiples variables peuvent être déclarées sur une seule ligne :
|
La zone de communication SQL est définie avec :
EXEC SQL INCLUDE sqlca; |
![]() | Le sqlca est en minuscules. Alors que la convention SQL peut être suivie, i.e., utiliser des majuscules pour séparer le SQL embarqué des instructions en C, sqlca (qui comprend le fichier d'en-têtes sqlca.h) doit être en minuscules. Ceci parce que le préfixe EXEC SQL indique que cette inclusion sera analysée par ecpg. ecpg est sensible à la casse (SQLCA.h ne sera pas trouvé). EXEC SQL INCLUDE peut être utilisé pour inclure d'autres fichiers d'en-têtes tant que la sensibilité à la casse est respectée. |
La commande sqlprint est utilisée avec l'instruction EXEC SQL WHENEVER pour activer le traitement d'erreur à travers le programme :
EXEC SQL WHENEVER sqlerror sqlprint; |
EXEC SQL WHENEVER not found sqlprint; |
![]() | Ceci n'est pas un exemple exhaustif de l'usage de l'instruction EXEC SQL WHENEVER. D'autres exemples peuvent être trouvés dans les manuels de SQL (ex., The LAN TIMES Guide to SQL par Groff et Weinberg). |
On se connecte à une base en utilisant :
EXEC SQL CONNECT TO dbname; |
Spécifier un nom de serveur et un port dans l'instruction de connexion est également possible. La syntaxe est :
dbname[@server][:port] |
<tcp|unix>:postgresql://server[:port][/dbname][?options] |
En général, des requêtes SQL acceptables par les autres applications comme psql peuvent être insérées dans votre code C. Ici, quelques exemples de la façon de faire :
Création de table:
EXEC SQL CREATE TABLE foo (number int4, ascii char(16)); EXEC SQL CREATE UNIQUE index num1 on foo(number); EXEC SQL COMMIT; |
Insertion :
EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, 'doodad'); EXEC SQL COMMIT; |
Suppression :
EXEC SQL DELETE FROM foo WHERE number = 9999; EXEC SQL COMMIT; |
Sélection unitaire :
EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad'; |
Sélection en utilisant des curseurs :
EXEC SQL DECLARE foo_bar CURSOR FOR
SELECT number, ascii FROM foo
ORDER BY ascii;
EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
...
EXEC SQL CLOSE foo_bar;
EXEC SQL COMMIT; |
Mises à jour :
EXEC SQL UPDATE foo
SET ascii = 'foobar'
WHERE number = 9999;
EXEC SQL COMMIT; |
La définition de structure complète DOIT être listée dans la section de déclaration.
Voir le fichier TODO dans le source pour d'autres fonctionnalités.
| <<< Previous | Home | Next >>> |
| dropuser | Up | pgaccess |