4.4. SQL コマンドの実行

すべての SQL コマンドは、埋め込み SQL アプリケーション内で実行できます。 以下に例をいくつか示します。

テーブルの作成

EXEC SQL CREATE TABLE foo (number integer, ascii char(16));
EXEC SQL CREATE UNIQUE INDEX num1 ON foo(number);
EXEC SQL COMMIT;

行の挿入

EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, 'doodad');
EXEC SQL COMMIT;

行の削除

EXEC SQL DELETE FROM foo WHERE number = 9999;
EXEC SQL COMMIT;

singleton Select

EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = 'doodad';

カーソルを使用した Select

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;

更新

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

:something という形式のトークンは、ホスト変数です。つまりこれらは C プログラムの変数を参照しています。 これらについては、次の節で説明します。

デフォルトモードでは、文は EXEC SQL COMMIT が発行されることによりコミットされます。 埋め込み SQL インタフェースでも、他のさまざまなインタフェース同様、トランザクションの自動コミットをサポートしています。自動コミットは、ecpg コマンド (以下を参照) のコマンド行オプション -t、あるいは EXEC SQL SET AUTOCOMMIT TO ON 文によって可能になります。 autocommit (自動コミット)モードでは、問い合わせが明示的なトランザクションブロックの内部にある場合を除き、すべての問い合わせが自動的にコミットされます。 自動コミットモードは、EXEC SQL SET AUTOCOMMIT TO OFF を使用して明示的に無効にすることができます。