31.4. Exécuter des commandes SQL
Toute commande SQL peut être exécutée à l'intérieur d'une application
SQL embarquée. Ci-dessous se trouvent quelques exemples de
procédures.
Création d'une table :
EXEC SQL CREATE TABLE foo (nombre integer, ascii char(16));
EXEC SQL CREATE UNIQUE INDEX num1 ON foo(nombre);
EXEC SQL COMMIT;
Insertion de lignes :
EXEC SQL INSERT INTO foo (nombre, ascii) VALUES (9999, 'doodad');
EXEC SQL COMMIT;
Suppression de lignes :
EXEC SQL DELETE FROM foo WHERE nombre = 9999;
EXEC SQL COMMIT;
Sélection d'une ligne :
EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad';
Sélection à l'aide de curseurs :
EXEC SQL DECLARE foo_bar CURSOR FOR
SELECT nombre, ascii FROM foo
ORDER BY ascii;
EXEC SQL OPEN foo_bar;
EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
...
EXEC SQL CLOSE foo_bar;
EXEC SQL COMMIT;
Actualisations :
EXEC SQL UPDATE foo
SET ascii = 'foobar'
WHERE nombre = 9999;
EXEC SQL COMMIT;
Les lexèmes de la forme «
:
quelquechose
» sont des
variables hôtes, c'est-à-dire qu'elles
font référence à des variables du programme C. Elles sont expliquées
dans la Section 31.6,
« Utiliser des variables hôtes ».
Dans le mode par défaut, les instructions ne sont validées que
lorsque
EXEC SQL COMMIT
est exécuté. L'interface SQL embarqué supporte aussi la validation
automatique des transactions (similaire au comportement de
libpq) via l'option -t en ligne de commande pour
ecpg
(voir ci-dessous) ou via
l'instruction EXEC SQL SET AUTOCOMMIT TO ON.
En mode de validation automatique, chaque commande est
automatiquement validée sauf si elle est à l'intérieur d'un bloc de
transaction explicite. Ce mode peut être explicitement désactivé en
utilisant EXEC SQL SET AUTOCOMMIT TO OFF.