16.20 - カーソルと埋め込みSQL - 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

カーソルルール

  • 特定のアプリケーションで同時にオープンできるカーソルの最大数は16です。
  • カーソルを定位置にできるかどうかは、プリコンパイラ宣言TRANSACTまたは-trをどのように設定するかに応じて異なります(次の表を参照)。
    設定 デフォルト タイプ
    ANSI 定位置
    BTET 定位置ではない

    Teradata SQLでは、ANSI/ISO SQL規格のカーソル用のFOR READ ONLY句およびFOR UPDATE句をサポートしていません。

  • 16のカーソルを開いているアプリケーションでは、その次に発行できる文が以下のいずれかに限られます。
    • CLOSE
    • COMMIT (COMMITモードの場合)
    • FETCH
    • LOGOFF
    • POSITION
    • REWIND
  • カーソルおよび動的文識別子は、次にリストする有効な文字で作成します。
    • 英大文字
    • 英小文字
    • $
    • @
    • #
    • 数字
    • 下線
  • カーソルおよび動的文識別子は、先頭が国別文字でなければならず、18文字を超えることはできません。
  • カーソルおよび動的文識別子は、SQLキーワードにすることはできません。
  • 識別子間の比較が目的の時は、大文字でも小文字でもかまいません。

    プリプロセッサは、大文字、小文字、またはそれらの混合のいずれの文も受け入れます。

  • マルチバイト文字セットをサポートするために、カーソルおよび動的文の名前はマルチバイト文字にすることができ、それらは内部16進数表記で表現することができます。

Preprocessor2のカーソル サポート文

このセクションでは、カーソルをサポートするさまざまなSQL文が、埋め込みSQLにどのように組み込まれて1つにまとめられるかを説明します。

  1. データを返す文DECLARE cursor_name CURSOR FORを使用して、カーソル名を複数行のデータを返す文に関連付けます。

    単独SELECTを処理するためにカーソルを使用する必要はありません。

  2. 宣言したカーソルを操作するには、次に示す文を使用します。
    機能
    OPEN cursor_name DECLARE CURSOR文で定義したリクエスト(複数可能)を実行します。
    FETCH cursor_name INTO 開かれたカーソルを使用して結果セットから連続する個別の行を取得してホスト変数に入れ、ホスト言語文を使用して、WHENEVER文、または各FETCH後のSQLCODEまたはSQLSTATEに返されたステータス コードの値のテストに基づいて、カーソルを増分します。
    DELETE … WHERE CURRENT OF cursor_name 実テーブルから現在取り出されている行を削除します。
    UPDATE … WHERE CURRENT OF cursor_name 現在取り出されている行を更新します。
    POSITION cursor_name 指定した文の最初の行に、カーソルを前進または後退します。
    REWIND cursor_name リクエストの最初(または唯一)の文の最初の行にカーソルを移動します。
    CLOSE cursor_name 開いたcursor_nameを閉じ、DECLARE CURSOR文で指定したデータを返す文を終了します。

カーソルのアクションと結果

アクション SQL文 結果
カーソルと関連付けられる文またはリクエストの定義 DECLARE CURSOR カーソルと、SQLデータを返す文との間の関連を定義する。
カーソルのオープン OPEN DECLARE CURSORで定義された、SQLデータを返す文を実行する。
結果テーブルの次の行の検索 FETCH 結果テーブルから行を検索する。
カーソルを、特定のSQL文の最初の行に移動させる。 POSITION

REWIND

カーソルを、指定した文の結果テーブルの最初の行に配置する。
行の更新 UPDATE … WHERE CURRENT OF 現在行の内容を更新する。
行の削除 DELETE … WHERE CURRENT OF テーブルから現在行を削除する。
カーソルのクローズ CLOSE 検索プロセスを終了する。