16.20 - カーソルが必要な理由 - 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 SELECT文は、データ行を1度に1行だけ取得できます。それらのアプリケーション内に複数のデータ行を取得するSELECT文があると、エラーが発生します。

リクエストから検索される行数が分からなければ、SELECTの結果を保持するのに必要なホスト変数の数も分かりません。1つの結果行しか検索できないのにはそのような理由があります。

これは、1行だけを返すように記述したSELECT文、いわゆるシングルトンSELECTでは問題になりません。しかし、SQLクエリーはよく、結果テーブルまたは応答セットの形式で複数の行を返します。これは、処理を行なうプログラミング言語が配備されていない場合によく起きます。

COBOL、C、およびPL/Iなどの従来のプログラミング言語はレコード指向ですが、リレーショナル データベースとその演算子は本質的にセット指向です。

カーソルによって、レコード指向の言語でセット指向のデータを処理できるようになります。カーソルは、結果テーブル内の単一のデータ行を指すポインタだと考えてください。

カーソルでは、埋め込みSQLとストアド プロシージャに固有のSQL文を使用して、スプール ファイルと呼ばれるデータ構造に保持された結果テーブルを1度に1行ずつ順次処理します。

結果セット カーソル

ストアド プロシージャで、最大15個の結果セットを返すように指定できます。

関連トピック

結果を返すストアド プロシージャを指定する方法については、ストアド プロシージャからの結果セットの返送およびDECLARE CURSOR (ストアド プロシージャ形式)を参照してください。