29.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 façons de procéder.

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 utilisant des 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;

Mises à jour :

EXEC SQL UPDATE foo
    SET ascii = 'foobar'
    WHERE nombre = 9999;
EXEC SQL COMMIT;

Les marques de la forme << :quelquechose >> sont des variables hôtes, c'est-à-dire qu'elles font référence à des variables dans le programme C. Elles sont expliquées dans la Section 29.6.

Dans le mode par défaut, les instructions ne sont validées que lorsque EXEC SQL COMMIT est exécuté. L'interface SQL embarquée 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.