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

4.7 DECLARE CURSOR(動的カーソル宣言)

機能

PREPARE文によって用意された文に基づいて、カーソルを定義します。

記述形式

参照項番

一般規則

カーソル名
  • カーソルの名前を指定します。

  • カーソル名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。

  • カーソル名は、コンパイル単位内でほかのカーソル宣言、または動的カーソル宣言のカーソル名と異なっていることが必要です。

  • カーソル名とALLOCATE CURSOR文で指定した拡張カーソル名の値が同じでも、異なるカーソルとして区別されます。

SQL文識別子
  • PREPARE文で用意するSQL文の識別子を指定します。

  • SQL文識別子には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。

使用例

被準備文が動的SELECT文の場合、カーソル宣言における問合せ式の部分にSQL文識別子を指定します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。

  EXEC SQL BEGIN DECLARE SECTION;
       VARCHAR CMDAREA[100];
  EXEC SQL END DECLARE SECTION;
                  :
  EXEC SQL DECLARE CU1 CURSOR FOR CMD;                              (1)
  strcpy(CMDAREA.sqlvar,"SELECT COL1,COL2,COL3 FROM S1.TBL");       (2)
  CMDAREA.sqllen = strlen(CMDAREA.sqlvar);
  EXEC SQL PREPARE CMD FROM :CMDAREA;                               (3)

(1) カーソルCU1が、SQL文識別子CMDで指定された問合せ式によって定義されます。

(2) ホスト変数CMDAREAに動的SELECT文を設定します。

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


これは、次のSQL文と同じです。

EXEC SQL DECLARE CU1 CURSOR FOR SELECT COL1,COL2,COL3 FROM S1.TBL;