機能
SQL文を動的に準備して実行します。
記述形式
参照項番
埋込み変数名 → “6.5 SQL埋込みホストプログラム”
権限
EXECUTE IMMEDIATE文を実行できるのは、準備可能文に対する権限の保持者です。
一般規則
SQL文変数にSQL文を設定して、EXECUTE IMMEDIATE文を実行することにより、そのSQL文が実行されます。
SQL文が設定されている埋込み変数名を指定します。
SQL文変数の内容は以下のものであることが必要です。
UPDATE文:探索
INSERT文
DELETE文:探索
準備可能動的UPDATE文:位置づけ
準備可能動的DELETE文:位置づけ
スキーマ定義文
スキーマ操作文
格納構造定義文
格納構造操作文
利用者制御文
アクセス制御文
システム制御文
CALL文
SQL文変数の内容が準備可能動的DELETE文:位置づけまたは準備可能動的UPDATE文:位置づけの場合、指定したカーソル名は、以下のいずれかと同じであることが必要です。ただし、両方と同じである場合は、例外(あいまいなカーソル名)となります。
同一コンパイル単位に含まれる動的カーソル宣言のカーソル名
同一セションで実行されたALLOCATE CURSOR文の拡張カーソル名の値
また、指定したカーソルがオープンされていることが必要です。
SQL文変数に設定するSQL文には、SQL先頭子(EXEC SQL)、SQL終了子(END-EXECまたは;)、注釈、ホスト変数および動的パラメタ指定を含むことはできません。
使用例
被準備文が、DELETE文:探索の場合を示します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。
EXEC SQL BEGIN DECLARE SECTION; VARCHAR CMDAREA[100]; EXEC SQL END DECLARE SECTION; : strcpy(CMDAREA.sqlvar,"DELETE FROM S1.TBL WHERE COL1 = 39"); (1) CMDAREA.sqllen = strlen(CMDAREA.sqlvar); : EXEC SQL EXECUTE IMMEDIATE :CMDAREA; (2)
(1) ホスト変数CMDAREAに被準備文を設定します。
(2) ホスト変数CMDAREAに対応づけられた被準備文を実行します。
これは、次のSQL文と同じです。
EXEC SQL DELETE FROM S1.TBL WHERE COL1 = 39;