アプリケーション開発の手引き
組み込み SQL ステートメントは次の 3 つの要素からなります。
- 要素
- 正しい構文
- ステートメント初期化指定子
- EXEC SQL
- ステートメント・ストリング
- 任意の有効な SQL ステートメント
- ステートメント終了記号
- セミコロン (;)
以下はその例です。
EXEC SQL SELECT col INTO :hostvar FROM table;
組み込み SQL ステートメントには、以下の規則が適用されます。
- SQL ステートメント・ストリングは、キーワード対または別の行として同じ行で開始することができる。ステートメント・ストリングは、複数行にわたる長さであってもかまいません。ただし、対になった EXEC SQL キーワードを複数行に分割してはなりません。
- SQL ステートメント終了記号を使用しなければならない。使用しない場合、プリコンパイラーはアプリケーション内の次の終了記号まで処理を継続します。これにより、不確定のエラーが起こる恐れがあります。
C/C++ 注釈は、ステートメント開始記号の前、またはステートメント終了記号の後に入れることができます。
- 複数の SQL ステートメントと C/C++ ステートメントは同じ行に置くことができる。以下はその例です。
EXEC SQL OPEN c1; if (SQLCODE >= 0) EXEC SQL FETCH c1 INTO :hv;
- SQL プリコンパイラーは、CR/LF および TAB を引用符付きストリングにそのまま残す。
- SQL 注釈は、組み込み SQL ステートメントの一部となっている行であればどこでも使用することができる。この注釈は、動的に実行するステートメントでは使用できません。
SQL 注釈の形式は、ダブル・ダッシュ (--) の後に 0 個以上の文字ストリングが続き、行末で終了します。
SQL 注釈は SQL ステートメント終了記号の後に置かないでください。これを行うと、注釈が C/C++ 言語の一部のように見えるため、コンパイル・エラーの原因となるからです。
注釈は、ブランクを使用できる静的ステートメント・ストリング内であればどこでも使用することができます。
C/C++ 注釈区切り文字の /* */、または SQL 注釈記号の (--) を使用してください。
//-style C++ 注釈は静的 SQL ステートメントでは使用できませんが、プログラム内の他の場所では使用できます。プリコンパイラーは、SQL ステートメントを処理する前に注釈を削除します。動的 SQL ステートメントでは、C および C++ の注釈区切り文字である /* */ または // を使用することはできません。ただし、プログラム内の他の場所では使用できます。
- C および C++ アプリケーションでは、
SQL ストリング・リテラルや区切り識別子は次の行にわたって続けることができる。このことを行うには、中断させたい行の末尾に円記号 (\) を使用します。以下はその例です。
EXEC SQL SELECT "NA\
ME" INTO :n FROM staff WHERE name='Sa\
nders';
改行文字 (復帰や改行など) はいずれも、ストリングまたは区切り識別子には含まれません。
- 行末文字およびタブ文字などの空白文字の置換は、次のように行われる。
- 引用符の外 (ただし、SQL ステートメント内) では、行末文字または TAB 文字は単一スペースと置き換えられる。
- 引用符内では、ストリングが C プログラムに適合した形で継続されていれば、行末文字は消去される。
TAB は修正されません。
行末および TAB に使用される実際の文字は、プラットフォームごとに異なります。たとえば、OS/2 は復帰 / 改行を行末に使用するのに対し、UNIX ベースのシステムは改行のみを使用します。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]