OceanBaseデータベースのPL機能には、例外処理を行う際の制限があります。
OceanBaseデータベースのPL機能で例外処理を行う際には、以下の制限に注意してください:
SIGNAL、RESIGNAL、およびGET DIAGNOSTICSは、プリペアドステートメントとして使用できません。以下の例のステートメントは無効です:PREPARE stmt1 FROM 'SIGNAL SQLSTATE "42000"';'04' クラスの
SQLSTATE値は特別な処理がされていないため、他の例外と同じ方法で処理されます。標準SQLでは、最初の条件は前のSQL文が返す
SQLSTATE値に関連付けられるべきですが、必ずしもそうとは限りません。そのため、以下のステートメントで主要なエラー情報を取得することはできません:GET DIAGNOSTICS CONDITION 1 @err_no = MYSQL_ERRNO;代わりに、以下の方法を使用することを推奨します:
GET DIAGNOSTICS @count_no = NUMBER; GET DIAGNOSTICS CONDITION @count_no @err_no = MYSQL_ERRNO;