目的
リクエスト カーソルを定義して名前を割り当てます。
呼び出し
実行不可プリプロセッサ宣言。
埋め込みSQLのみ。
構文
- cursor_name
- 宣言するカーソルの名前を指定します。
- request_specification
- 単一引用符で囲んだリテラル文字列。セミコロンで区切った任意数のSQL文から成ります。
ANSI準拠
ANSI/ISO SQL:2011準拠。
許可
なし。
ルール
request_specification内の文には、次に示すどのSQL文も組み込むことができません。
- CHECKPOINT
- CLOSE
- COMMIT
- CONNECT
- DATABASE
- DESCRIBE
- ECHO
- EXECUTE
- EXECUTE IMMEDIATE
- FETCH
- LOGON
- OPEN
- POSITION
- PREPARE
- REWIND
- SET BUFFERSIZE
- SET CHARSET
- SET SESSION
クライアント言語の文字列リテラルの連結の構文に従って、request_specificationを複数行にわたって続けることができます(埋め込みSQLのみ)。
request_specification内の文は、Preprocessor2宣言であってはなりません(埋め込みSQLのみ)。
システムはカーソルを開いたときに、以下のいずれかの成功を反映させるようにSQLCAを更新します(SQLCODEのSQLCAは0に設定され、SQLSTATEは‘00000’に設定されます)。
- リクエストの最初の文
- 失敗が暗黙的なトランザクションのロールバックと定義されているリクエストの失敗
失敗条件があるときは、常に成功報告をオーバーライドします。成功の場合は、SQLCA内の3番目のSQLERRD要素にアクティビティ カウントが示されます。リクエストの他の文の実行の結果を得るには、POSITION文を使用します(埋め込みSQLのみ)。
request_specification内のいずれかの文がデータを返す文の場合、アプリケーション プログラムは応答データセットを取得するために、POSITION文を使用して該当の結果セットに位置合わせしなければなりません。
OPENはその位置をリクエストの最初の文に自動的に設定するので、その場合はPOSITION文は必要ありません。
FETCH文に適切なホスト変数リスト(INTO句)を指定するか、または出力SQLDA (USING DESCRIPTOR句)を使用します(埋め込みSQLのみ)。
例: リテラル文字列の連結詳細の省略
以下の例では、複数行にわたるリテラル文字列の連結の詳細は省いています。そのルールはクライアント言語によって決められます。
DECLARE Ex CURSOR FOR ’UPDATE employee SET salary = salary * 1.08 WHERE deptno = 500; SELECT deptname, name, salary FROM employee, department WHERE employee.deptno = department.deptno ORDER BY deptname, name’