SQL 解説書

EXECUTE IMMEDIATE

EXECUTE IMMEDIATE ステートメントは、以下のことを行います。

EXECUTE IMMEDIATE の機能は、 PREPARE ステートメントと EXECUTE ステートメントの基本的な機能の組み合わせです。 このステートメントは、 ホスト変数もパラメーター・マーカーも含まれていない SQL ステートメントを準備し実行する場合に使用することができます。

呼び出し

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

許可

権限の規則は、EXECUTE IMMEDIATE ステートメントに指定する SQL ステートメントにより定義されます。

構文

>>-EXECUTE IMMEDIATE--host-variable----------------------------><
 

説明

host-variable
ホスト変数の指定は必須であり、 文字ストリング変数の宣言規則に従ってプログラムに記述されたホスト変数を指定していなければなりません。 これは、最大のステートメント・サイズの 65 535 より小さい文字ストリング変数でなければなりません。 CLOB(65535) には最大のステートメント・サイズを含めることができますが、 VARCHAR には含めることができませんのでご注意ください。

指定するホスト変数の値は、ステートメント・ストリングと呼ばれます。

ステートメント・ストリングは、以下のいずれかの SQL ステートメントでなければなりません。

ステートメント・ストリングには、 パラメーター・マーカーやホスト変数への参照を含めてはなりません。 また EXEC SQL で始まっていてはなりません。 ステートメント終止符を含めることはできません。 ただし、CREATE TRIGGER ステートメントと CREATE PROCEDURE ステートメントでは、 トリガーによって実行される SQL ステートメントを区切ったり、 SQL プロシージャーの本体で SQL ステートメントを区切るためにセミコロン (;) を使用することができます。

EXECUTE IMMEDIATE ステートメントを実行すると、 指定したステートメント・ストリングの構文解析が行われ、エラーの有無が検査されます。 その SQL ステートメントが無効である場合、 それは実行されず、実行を妨げているエラー条件が SQLCA に報告されます。 SQL ステートメントが有効で、その実行の過程でエラーが発生した場合、 エラー条件が SQLCA に報告されます。

C プログラム・ステートメントを使用して SQL ステートメントをホスト変数 qstring (char[80]) に入れ、 そのホスト変数 qstring に入れられた SQL ステートメントを作成および実行します。

  if ( strcmp(accounts,"BIG") == 0 )
    strcpy (qstring,"INSERT INTO WORK_TABLE SELECT *
      FROM EMP_ACT WHERE ACTNO < 100");
  else
    strcpy (qstring,"INSERT INTO WORK_TABLE SELECT *
      FROM EMP_ACT WHERE ACTNO >= 100");
    .
    .
    .
  EXEC SQL  EXECUTE IMMEDIATE :qstring;


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