ページの先頭行へ戻る
Symfoware Server V10.0.0 SQLリファレンス

4.12 EXECUTE IMMEDIATE文

機能

SQL文を動的に準備して実行します。

記述形式

参照項番

権限

一般規則

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;