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

ストアド プロシージャには、汎用条件ハンドラーと特定条件ハンドラ(特定のSQLSTATEコードや条件名によって定義された特定の条件を処理するハンドラ)を備えることができます。特定条件ハンドラーと、それに似通った条件を処理するための汎用条件ハンドラーを備えたストアド プロシージャでは、特定条件ハンドラーが優先されます。このような場合には、以下のルールが適用されます。

  • SQLEXCEPTIONハンドラーと例外条件用の特定のハンドラーの両方をストアド プロシージャに指定した場合。
    発生した例外 実行されるハンドラー アクション
    ハンドラーに指定されたSQLSTATE値のいずれかと一致する場合 その特定の条件ハンドラーに定義されたアクション
    ハンドラーに指定された条件名のいずれかと一致する場合 その特定の条件ハンドラーに定義されたアクション
    どのハンドラーに指定された特定のSQLSTATEコードまたは条件名とも一致しない場合 汎用の例外条件ハンドラーに定義されたアクション
  • SQLWARNINGハンドラーと完了条件用の特定のハンドラーの両方を指定した場合。
    発生した条件 実行されるハンドラー アクション
    ハンドラーに指定されたSQLSTATE値のいずれかと一致する場合 その特定の条件ハンドラーに定義されたアクション
    ハンドラーに指定された条件名のいずれかと一致する場合 その特定の条件ハンドラーに定義されたアクション
    どのハンドラーに指定された特定のSQLSTATEコードまたは条件名とも一致しない場合 汎用完了条件ハンドラーに定義されたアクション
  • NOT FOUNDハンドラーと「no data found」完了条件用の特定のハンドラーの両方を指定した場合。
    「no data found」条件が発生した場合のSQLSTATE値 実行されるハンドラー アクション
    特定完了条件ハンドラーのいずれかに一致した場合 その特定完了条件ハンドラーに定義されたアクション
    特定条件ハンドラーのどれにも一致しない場合 汎用のNOT FOUND条件ハンドラーに定義されたアクション
  • 完了条件の「no data found」は、他のどの汎用完了条件よりも優先されます。「no data found」完了条件を処理できるのは、汎用のNOT FOUNDハンドラまたは特定条件ハンドラーだけです。