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

4.6 DEALLOCATE PREPARE文

機能

PREPARE文で準備されているSQL文を解放します。

記述形式

一般規則

SQL文識別子または拡張SQL文識別子
  • 解放する被準備文の名前を指定します。

  • 解放する被準備文を準備したPREPARE文がSQL文識別子を指定している場合は、SQL文識別子を指定します。

  • 解放する被準備文を準備したPREPARE文が拡張SQL文識別子を指定している場合は、拡張SQL文識別子を指定し、拡張SQL文識別子の値に被準備文の名前を指定します。

  • 拡張SQL文識別子は、文字列型の埋込み変数で指定します。拡張SQL文識別子の値に空白を含む場合は、前後の空白を取り除いた値が被準備文の名前になります。

  • SQL文識別子を指定した場合、SQL文識別子は、同一コンパイル単位に含まれるPREPARE文で定義されていることが必要です。

  • SQL文識別子と拡張SQL文識別子の値が同じでも、異なる被準備文として区別されます。

使用例

例1

DELETE文:探索をPREPARE文で準備し、EXECUTE文で実行した後、そのSQL文識別子に対応する被準備文を解放します。なお、可変長文字型の展開規則は、“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 PREPARE CMD FROM :CMDAREA;                            (2)
  EXEC SQL EXECUTE CMD;                                          (3)
  EXEC SQL DEALLOCATE PREPARE CMD;                               (4)

(1) ホスト変数CMDAREAにDELETE文:探索を設定します。

(2) ホスト変数CMDAREAが示すSQL文をSQL文識別子CMDに対応づけます。

(3) 被準備文を実行します。

(4) SQL文識別子CMDに対応する被準備文を解放します。

例2

拡張SQL文識別子を指定した場合の例を示します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。

  EXEC SQL BEGIN DECLARE SECTION;
       CHAR CMDVAR[4];
       VARCHAR CMDAREA[100];
  EXEC SQL END DECLARE SECTION;
                :
  strcpy(CMDVAR,"CMD");                                         (1)
  strcpy(CMDAREA.sqlvar,"DELETE FROM S1.TBL WHERE COL1 = 39");  (2)
  CMDAREA.sqllen = strlen(CMDAREA.sqlvar);
  EXEC SQL PREPARE :CMDVAR FROM :CMDAREA;                       (3)
  EXEC SQL EXECUTE :CMDVAR;                                     (4)
  EXEC SQL DEALLOCATE PREPARE :CMDVAR;                          (5)

(1) ホスト変数CMDVARに被準備文の名前CMDを設定します。

(2) ホスト変数CMDAREAにDELETE文:探索を設定します。

(3) ホスト変数CMDAREAが示すSQL文を拡張SQL文識別子CMDVARの値CMDに対応づけます。

(4) 被準備文を実行します。

(5) 拡張SQL文識別子CMDVARの値CMDに対応する被準備文を解放します。