IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

32.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 32.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.