DECLARE CURSOR (リクエスト形式) - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/rop1530578142648.ditamap
dita:ditavalPath
ja-JP/rop1530578142648.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

目的

リクエスト カーソルを定義して名前を割り当てます。

呼び出し

実行不可プリプロセッサ宣言。

埋め込みSQLのみ。

構文



cursor_name
宣言するカーソルの名前を指定します。
request_specification
単一引用符で囲んだリテラル文字列。セミコロンで区切った任意数のSQL文から成ります。
デフォルトでは、文字列は単一引用符(' ')で囲まれます。
QUOTESQLプリプロセッサ パラメータを使用して、このデフォルトをオーバーライドできます。単一引用符は、リクエスト カーソルの宣言を、カーソルの他のカテゴリから構文上区別します。

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’