ストアド プロシージャには、汎用条件ハンドラーと特定条件ハンドラ(特定の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ハンドラまたは特定条件ハンドラーだけです。