SQL 解説書

EXECUTE

EXECUTE ステートメントは、準備済み SQL ステートメントを実行します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込む方法のみ可能です。 これは、動的に準備できない実行可能ステートメントです。

許可

ステートメントの実行時に許可検査が行われるステートメント (DDL、GRANT、 および REVOKE ステートメント) の場合、このステートメントの許可 ID の特権には、 PREPARE ステートメントで指定されている SQL ステートメントを実行するための特権が含まれていなければなりません。 許可検査がステートメントの準備の時点で行われるステートメント (DML) の場合、 このステートメントを使用するために必要な権限はありません。

構文

>>-EXECUTE--statement-name-------------------------------------->
 
>-----+------------------------------------+-------------------><
      |        .-,----------------.        |
      |        V                  |        |
      +-USING-----host-variable---+--------+
      '-USING DESCRIPTOR--descriptor-name--'
 

説明

statement-name
実行する準備済みのステートメントを指定します。 statement-name (ステートメント名) はすでに準備済みのステートメントを指定していなければならず、 またそのステートメントが SELECT ステートメントであってはなりません。

USING
この後に、 準備済みステートメントのパラメーター・マーカー (?) に置き換わる値を含むホスト変数のリストを指定します。 (パラメーター・マーカーについては、PREPARE を参照してください。) 準備済みステートメントにパラメーター・マーカーが含まれている場合、USING は必須です。

host-variable, ...
ホスト変数の宣言規則に従って、 該当プログラムで宣言されているホスト変数を指定します。 変数の数は、準備されるステートメントのパラメーター・マーカーの数と同じでなければなりません。 n 番目の変数は、 準備済みステートメントの n 番目のパラメーター・マーカーに対応します。 該当する場合には、 パラメーター・マーカーに対する値のソースとしてロケーター変数とファイル参照変数も指定できます。

DESCRIPTOR descriptor-name
入力 SQLDA を指定します。 その内容は、ホスト変数についての有効な記述でなければなりません。

EXECUTE ステートメントが処理される前に、 ユーザーは、入力 SQLDA の以下のフィールドを設定する必要があります。

  • SQLDA に用意する SQLVAR のエレメント数を示す SQLN
  • SQLDA に割り振る記憶域のバイト数を示す SQLDABC
  • ステートメントの処理時にその SQLDA の使用される変数の数を示す SQLD
  • 変数の属性を示す SQLVAR のオカレンス

SQLDA には、すべての SQLVAR オカレンスが入るだけの十分な記憶域がなければなりません。 したがって、SQLDABC の値は 16 + SQLN*(N) 以上でなければなりません (N は 1 つの SQLVAR オカレンスの長さ)。

LOB 入力データを入れる必要がある場合には、 各パラメーター・マーカーごとに 2 つの SQLVAR 項目が必要になります。

SQLD に設定する値は、ゼロ以上で SQLN 以下でなければなりません。 詳しくは、付録 C, SQL 記述子域 (SQLDA)を参照してください。

例 1: この C の例では、パラメーター・マーカーを伴う INSERT ステートメントが準備され、実行されます。 h1 - h4 は、TDEPT の形式に対応するホスト変数です。

   strcpy (s,"INSERT INTO TDEPT VALUES(?,?,?,?)");
   EXEC SQL PREPARE DEPT_INSERT FROM :s;
      .
      .
   (正常実行の検査を行い、:h1, :h2, :h3, :h4 に値を入れる)
      .
      .
   EXEC SQL EXECUTE DEPT_INSERT USING :h1, :h2,
   :h3, :h4;

例 2: この EXECUTE ステートメントは SQLDA を使用します。

      EXECUTE S3 USING DESCRIPTOR :sqlda3


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]