WHENEVER - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vqj1592443206677.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1148
Product Category
Software
Teradata Vantage

例外条件が発生したときに実行されるアクションを指定します。

ANSI準拠

WHENEVERは、ANSI/ISO SQL:2011準拠であり、拡張機能が追加されています。

必要な権限

なし。

呼び出し

実行可能形式。

埋め込みSQLのみ。

構文

WHENEVER condition action

構文要素

condition
指定されたアクションが実行される条件のタイプを示すステータス キーワード。
有効なconditionキーワードとその定義を次の表にリストします。
それぞれのキーワードの後に、条件が発生した場合の変数SQLCODEおよびSQLSTATEの値の定義を示します。
SQLERRORが、SQLエラーが発生する条件の場合:
  • SQLCODEの値: <0
  • NOT FOUNDが、データが見つからないときの条件の場合:
    • SQLCODEの値: +100
    • SQLSTATEの値: 02xxx
SQLWARNINGが、SQL警告が生じる条件の場合(SQLWARNINGは非ANSI のTeradata拡張機能です):
  • SQLCODEの値: +100以外の正の値
  • SQLSTATEは定義されません。
action
条件が発生した場合に実行されるアクション。
有効なアクションは以下のとおりです。
  • CONTINUE
  • GO TO :host_label
  • GOTO :host_label
  • PERFORM code
  • CALL function_call
説明:
  • :host_labelは、クライアント言語GO TO文の有効なターゲットを指定します。先行コロンを使用することを強く推奨します。
  • codeは、例外条件が発生した場合に実行されるアプリケーションのセクションまたはパラグラフの名前を指定します。PERFORMアクションはCOBOLでのみ有効です。
  • function_callは、例外条件が発生した場合に呼び出される関数を指定します。

使用上の注意

  • プリコンパイラSQLFLAGGERオプションをENTRYに設定すると、WHENEVER SQLWARNINGによってプリコンパイラ警告が発生します。
  • GO TOのオブジェクトのルールは、言語によって異なります。
  • 初期の暗黙的例外宣言として、常にCONTINUEが宣言されます。
  • プログラム テキストの例外宣言の後にSQL文が続き、しかも同じ例外条件に対して他の例外宣言が介入しない場合に限って、例外宣言はその特定のSQL文に適用されます。
    例外条件が当てはまる場合のアクション アプリケーション プログラムの実行が続行される場所
    CONTINUE 次の命令。

    例外条件は無視されます。

    GOTO 指定されたターゲットの場所。

    host_labelを指定する際、ターゲットを示すクライアント言語のGO TO文が、例外宣言の適用される全てのSQL文において有効になるようにする必要があります。

    CALL 指定されたサブプログラムが実行され(呼び出され)、呼び出し側プログラムに制御が戻された後、次の命令が実行されます。

    対応するクライアント文(COBOLおよびPL/I の場合はCALL関数、Cの場合は関数呼び出し)は、例外宣言が適用される全てのSQL文において有効でなければなりません。

    PERFORM 指定された1つまたは複数のCOBOLパラグラフまたはセクションが実行された後の次の命令。

    対応するCOBOL文(PERFORMコード)は、例外宣言が適用される全てのSQL文において有効でなければなりません。

  • 次のSQLCODE定義が適用されます。
    SQL文の実行後のSQLCODEの値 当てはまる例外条件
    任意の負の数 SQLERROR
    +100以外の正の値 SQLWARNING
    +100 NOT FOUND

関連情報

  • SQLSTATEについては、SQLSTATEを参照してください。
  • GO TOのオブジェクトのルールについては、<Teradata® Preprocessor2 for Embedded SQLプログラマ ガイド、B035-2446>を参照してください。