ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4.2 SQLプリコンパイラの構文

SQLプリコンパイラでは、単一文と複合文をホスト言語プログラムに直接組み込む(埋め込む)ことができる特別なキーワードおよび構文が提供されています。これにより、SQLプリコンパイラを使用して埋込み文とホスト言語コードの組合せを処理し、リンクと実行に使用するオブジェクト・ファイルを生成できます。

環境

SQLプリコンパイラの構文は、Ada、C、COBOL、FORTRAN、PascalおよびPL/Iのホスト言語ソース・ファイルでのみ使用できます。SQLプリコンパイラは、他のホスト言語はサポートしていません。サポート対象に含まれていないホスト言語を埋込みSQLに対して使用して、そのホスト言語でSQLインタフェースを使用する場合は、SQLモジュール・プロセッサを使用する必要があります。

形式










引数

compound-statement

複数のSQL文を、1つのSQLモジュール・プロシージャまたは埋込みSQLプロシージャに組み込むことができる文です。

複合文を含む埋込みプロシージャは、埋込み複数文プロシージャと呼ばれます。SQLでは、ホスト言語プログラムに埋め込まれた複合文でSQL文の制限されたサブセットがサポートされています。複合文で使用できる有効なSQL文のリストは、表1-1を参照してください。

複合文には、プログラムのような制御フロー文(IF、LOOP、CASE、LEAVE)、トランザクション管理文(COMMITおよびROLLBACK)、変数宣言文(SET代入)、カーソル処理文(FOR)、およびプロシージャ・デバッグ文(TRACE)を組み込むこともできます。

複合文の詳細は、「複合文」を参照してください。

ending-symbol

埋込みの単一文または複合文を終了します。埋込み文の終了では、表4-1にリストされているホスト言語の要件に従います。

表4-1 埋込みSQL文の終了
言語 EXEC SQL文の終了記号
Ada セミコロン(;)
C セミコロン(;)
COBOL END-EXEC
FORTRAN 終了記号は不要
Pascal セミコロン(;)
PL/I セミコロン(;)

EXEC SQL

それぞれの単一文または複合文に接頭辞として付与されます。対話型文をプリコンパイルされた文に変換するには、それぞれの単一文または複合文をキーワードEXEC SQLで開始する追加手順が必要です。SQLでは、他の方法でこれらの文を処理できません。さらに、キーワードEXECとSQLの両方を同じ行に配置する必要があります。キーワードEXECとSQLの間にコメントを挿入することはできません。

simple-statement

単一SQL文のみを組み込むことができる文です。単一文で有効なSQL文のリストは、表1-1を参照してください。

単一文の詳細は、「単一文」を参照してください。


使用方法


例1: ホスト言語プログラムへの複合文の埋込み

次の例は、複数文プロシージャをプログラムに埋め込む方法を示しています。キーワードPROCEDUREは、埋込みSQLアプリケーションでは使用されません。


EXEC SQL BEGIN DECLARE SECTION ;
   int   x ;
EXEC SQL END DECLARE SECTION ;

EXEC SQL
   BEGIN
      DECLARE :y INTEGER ;

      SET :y = 2 * :x ;  -- :x is a host variable

      UPDATE employees
      SET salary = :y ;
      WHERE .
            .
            .

         BEGIN
            DECLARE :x INTEGER ;

            SET :x = 100 ; -- :x is a local variable

            UPDATE employees
            SET salary = :x ;
            WHERE .
                  .
                  .
         END ;

   END ;