機能
PREPARE文によって用意された文に基づいて、拡張カーソル名で指定したカーソルを定義します。
記述形式
参照項番
SCROLL → “3.26 DECLARE CURSOR(カーソル宣言)”
日本語文字列 → “2.1.3 トークン”
一般規則
拡張SQL文識別子に対応する被準備文は、動的SELECT文であることが必要です。
ALLOCATE CURSOR文で定義したカーソルは、拡張SQL文識別子に対応するDEALLOCATE PREPARE文が実行されるか、拡張SQL文識別子に対応するPREPARE文が再度実行されるまで有効です。
カーソルの名前を指定するための変数を指定します。
拡張カーソル名は、文字列型の埋込み変数で指定します。拡張カーソル名に指定した埋込み変数の値がカーソルの名前になります。拡張カーソル名の値には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。英字の大文字と小文字は区別されます。
拡張カーソル名の値に空白を含む場合、前後の空白を取り除いた値がカーソルの名前になります。
拡張カーソル名の値に指定したカーソルと同じ名前のカーソルが別のALLOCATE CURSOR文で定義されていないことが必要です。
カーソル宣言や動的カーソル宣言で指定したカーソル名と、ALLOCATE CURSOR文で定義した拡張カーソル名の値が同じでも、異なるカーソルとして区別されます。
拡張カーソル名の値に指定したカーソルと対応づける被準備文の名前を指定するための変数を指定します。
拡張SQL文識別子は、文字列型の埋込み変数で指定します。拡張SQL文識別子に指定した埋込み変数の値が被準備文の名前になります。拡張SQL文識別子の値には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。英字の大文字と小文字は区別されます。
拡張SQL文識別子の値に空白を含む場合は、前後の空白を取り除いた値が被準備文の名前になります。
拡張SQL文識別子で指定した被準備文の名前は、PREPARE文で定義されていることが必要です。
SQL文識別子と拡張SQL文識別子の値が同じでも、異なる被準備文として区別されます。
使用例
ALLOCATE CURSOR文の拡張カーソル名でカーソルを定義します。なお、可変長文字型の展開規則は、“6.3 SQL埋込みCプログラム”を参照してください。
EXEC SQL BEGIN DECLARE SECTION; CHAR CURVAR[4]; CHAR CMDVAR[4]; VARCHAR CMDAREA[100]; EXEC SQL END DECLARE SECTION; : strcpy(CURVAR,"CU1"); (1) strcpy(CMDVAR,"CMD"); (2) strcpy(CMDAREA.sqlvar,"SELECT COL1,COL2,COL3 FROM S1.TBL"); (3) CMDAREA.sqllen = strlen(CMDAREA.sqlvar); EXEC SQL PREPARE :CMDVAR FROM :CMDAREA; (4) EXEC SQL ALLOCATE :CURVAR CURSOR FOR :CMDVAR; (5)
(1) ホスト変数CURVARにカーソルの名前CU1を設定します。
(2) ホスト変数CMDVARに被準備文の名前CMDを設定します。
(3) ホスト変数CMDAREAに動的SELECT文を設定します。
(4) ホスト変数CMDAREAが示すSQL文を拡張SQL文識別子CMDVARの値CMDに対応づけます。
(5) 拡張カーソル名CURVARの値CU1と拡張SQL文識別子CMDVARの値CMDを対応づけます。