16.20 - DECLARE CURSOR (選択形式) - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

目的

選択カーソルに対して名前を定義し、割り当てます。

呼び出し

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

埋め込みSQLのみ。

構文



cursor_name
このカーソルに割り当てる名前。
この名前は、任意の有効なSQL識別子にします。
SCROLL
宣言されたカーソルが、FETCH指向の宣言に基づいて応答セット内の行を取り出せます。
SCROLLを指定しない場合、カーソルは応答セット内の次の行にのみスクロールできる。これは、デフォルトです。
SQL文がSELECT文である場合に限ってSCROLLを使用してください。
COMMENT
コメントを返す有効なSQL COMMENT文。
EXPLAIN
有効なSQL EXPLAINリクエスト修飾子。
HELP
有効なSQL HELP文。
SHOW
有効なSQL SHOW文。
SELECT
有効な埋め込みSQL SELECT文。
SELECT AND CONSUME
有効な埋め込みSQL SELECT AND CONSUME文。

ANSI準拠

ANSI/ISO SQL:2011準拠(Teradata拡張機能を追加)。

許可

なし。

ルール

SQL WITH…BY句を指定することはできません。

カーソル宣言に指定された全てのテーブル、またはそれらのテーブルを格納するデータベースに対するSELECT権限が必要です。

カーソル指定で参照される各ホスト変数は、DECLARE CURSOR文より先に定義しなければなりません。

FROM句で識別するテーブルはグループ ビュー(GROUP BY句を使用して定義されたビュー)であり、table_expression内では以下の句を使うことはできません。
  • WHERE
  • GROUP BY
  • HAVING

UNION演算子を指定する場合、合併内の各結果表の記述は、列名を除いて同一でなければなりません。結果テーブルの合併によって形成されるスプール テーブルのすべての列には名前がありません。

結果はUNION内の各クエリーの個々の結果テーブルの合併になり、重複行は除去されます。

ORDER BY句を指定すると、それぞれの列指定では、スプール テーブルの列を名前で指定する必要があります。

ORDER BY句の符号無し整数列参照には、スプール テーブルの列を相対番号で指定する必要があります。

名前付き列は、列指定または符号無し整数のいずれかによって参照できます。

名前のない列は、符号無し整数によって参照しなければなりません。

SELECT AND CONSUMEカーソルに対するDELETEまたはUPDATE埋め込みSQL文は指定できません。

キュー テーブルのカーソルは、PP2 ANSIモードでは常に読み取り専用になります。このため、PP2 ANSIモードのキュー テーブル カーソルに対しては、位置指定されたDELETEまたはUPDATE(つまり、最後に取り出されたカーソル行の削除または更新)を指定できません。

PP2 ANSIモードの複文リクエストでは、スクロール可能カーソルを使用できません。

例: DECLARE CURSORを使用したproj_idによるプロジェクトの整列

DECLARE ex1 CURSOR FOR
SELECT *
FROM project
ORDER BY proj_id

例: DECLARE CURSORを使用した番号によるプロジェクトの整列

DECLARE ex3 CURSOR FOR
SELECT a, b, ’X’
FROM tablex
WHERE a > b
   
UNION
    
(SELECT a, b, ’Y’
FROM tabley
WHERE a > b
    
INTERSECT
   
SELECT a, b, ’Y’
FROM tablez
WHERE a > b)
ORDER BY 1,2

例: DECLARE CURSORを使用したdeptnameとnameによるプロジェクトの整列

DECLARE ex2 CURSOR FOR
EXPLAIN SELECT deptname, name
FROM employee, department
WHERE employee.deptno = department.deptno
ORDER BY deptname, name

例: HELP TABLE employeeに対するDECLARE CURSORの使用

DECLARE ex4 CURSOR FOR
HELP TABLE employee

関連トピック

以下に関する詳細な情報
  • SCROLLについては、FETCH (埋め込みSQL形式)を参照してください。
  • COMMENTについては、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>の「COMMENT」を参照してください。
  • EXPLAINについては、<Teradata Vantage™ SQLデータ操作言語、B035-1146>の「EXPLAIN修飾子」を参照してください。
  • SHOWについては、<Teradata Vantage™ SQLデータ定義言語の構文規則および例、B035-1144>の「SHOW」を参照してください。
  • SELECTとSELECT AND CONSUMEについては、ルールに列挙された制限事項に注意する必要があります。