選択形式のDECLARE CURSORでは、カーソルと、SELECT文などのデータを返す文を関連付けます。
ANSI準拠
ANSI/ISO SQL:2011準拠(Teradata拡張機能を追加)。
必要な権限
なし。
構文
DECLARE cursor_name [ SCROLL ] CURSOR FOR {
COMMENT |
EXPLAIN |
HELP |
SHOW |
SELECT |
SELECT AND CONSUME
}
構文要素
- cursor_name
- このカーソルに割り当てる名前。
- SCROLL
- 宣言されたカーソルが、FETCH指向の宣言に基づいて応答セット内の行を取り出せます。
- COMMENT
- コメントを返す有効なSQL COMMENT文。
- EXPLAIN
- 有効なSQL EXPLAINリクエスト修飾子。
- HELP
- 有効なSQL HELP文。
- SHOW
- 有効なSQL SHOW文。
- SELECT
- 有効な埋め込みSQL SELECT文。
- SELECT AND CONSUME
- 有効な埋め込みSQL SELECT AND CONSUME文。
使用上の注意
- 使用上の注意(すべての形式)
- 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およびSHOWについては、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。
- EXPLAINについては、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。
- SELECTおよびSELECT AND CONSUMEについては、使用上の注意の制限を参照してください。