DECLARE CURSOR (動的SQL形式) - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
ft:locale
ja-JP
ft:lastEdition
2021-09-23
dita:mapPath
ja-JP/vqj1592443206677.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

動的SQL形式のDECLARE CURSORでは、カーソルと動的SQL文を関連付けます。

動的SQL文は、以下のいずれかになります。
  • データを返す文
  • Teradata SQLマクロ
  • マクロおよびデータを返す文を含む、サポートされている文の組み合わせの入った任意のリクエスト
  • Teradataストアド プロシージャ

ANSI準拠

ANSI/ISO SQL:2011準拠。

必要な権限

なし。

構文

DECLARE cursor_name [SCROLL] CURSOR FOR statement_name

構文要素

cursor_name
任意の有効なSQL識別子。
SCROLL
宣言されたカーソルが、FETCH指向の宣言に基づいて応答セット内の行を取り出せます。
SCROLLを指定しない場合、カーソルは応答セット内の次の行にのみスクロールできる。
動的SQLがSELECT文である場合に限ってSCROLLを使用してください。
statement_name
以前に準備された文に関連付けられた名前。

使用上の注意

  • 有効な準備済み動的SQL文は次のとおりです。
    • 単一の、データを返さない非マクロ文。
    • 単一のSELECT文(INTO句なしで指定すること)。
    • 単一のEXEC macro_name文。
    • 上記のどの文でも組み込むことができる複文リクエスト。
  • 使用上の注意(すべての形式)
  • statement_nameで指定した文をPREPAREしてから、そのトランザクション内で動的カーソルをOPENしなければなりません。
  • 与えられたstatement_nameに対して宣言できる動的カーソルは1つだけです。
  • SELECT AND CONSUMEカーソルに対するDELETEまたはUPDATE埋め込みSQL文は指定できません。

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

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

例: 動的なDECLARE CURSOR文の使用

動的DECLARE CURSOR文の形式は次のとおりです。

DECLARE Ex CURSOR FOR DynStmt7

関連情報