ホームページ >データベース >mysql チュートリアル >mysql ストアド プロシージャの例外処理分析_MySQL
例外キャプチャのタイプと処理メソッドを定義します:
リーリー
ここで注意すべき点がいくつかあります:
a,condition_value [,condition_value], これは、複数の状況を含めることができることを意味します (角括弧はオプションを示します)。つまり、複数の状況に対応する操作を実行するようにハンドラーを定義できることに加えて、condition_value には以下を含めることができます。上記にリストされている 6 つの値があります:
1. mysql_error_code、これは mysql のエラー コードを表します。エラー コードは、mysql 自体によって定義される数値です。この値は、mysql データベースのエラー コードと情報を参照できます。
2. SQLSTATE [VALUE] sqlstate_value、これはエラーコードと同様に 5 文字の文字列です。つまり、ANSI SQL や ODBC などの標準から引用されています。 mysql が独自に使用するために完全に定義されている上記の error_code とは異なり、より標準化されています。これは最初のものと似ており、mysql データベースのエラー コードと情報を参照することもできます。
3. 条件名、これは DECLARE...CONDITION ステートメントを使用して定義される条件名です。独自の条件名を定義する方法は後で紹介します。
4. SQLWARNING。SQLTATE の文字列が「01」で始まるエラーを示します。例: Error: 1311 SQLSTATE: 01000 (ER_SP_UNINIT_VAR)
5. NOT FOUND、SQLTATE の文字列が「02」で始まるエラーを示します。例: Error: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA)
6. SQLEXCEPTION。SQLSTATE の文字列が「00」、「01」、または「02」で始まらないエラーを示します。ここで「00」で始まる SQLSTATE は、実際にはエラーではなく正常に実行されたことを示します。 2 つ目は、上記の 4 と 5 の 2 つの状況です。
上記の 6 つの状況は、実際には 2 つのカテゴリに分類できます:
最初のカテゴリは比較的明確な処理で、指定されたエラー状況を処理するもので、3 つのメソッド 1、2、および 3 が含まれます。
1. SQL WARNING と NOT FOUND に対処する方法は、エラーを無視して実行を続行することです。したがって、カーソルの例では、繰り返し条件によって判断された値に対して no_more_products=1 ハンドラーを作成しないと、ループが実行されます。つづきます。 。
2. SQLEXCEPTION の場合、デフォルトの処理方法はエラーが発生した時点で終了します。
b、ステートメント、これは比較的単純で、特定の条件/エラーが発生したときに実行するステートメントです。SET var = value などの単純なステートメントにすることも、複雑な multi ステートメントにすることもできます。 -line ステートメント。複数の行がある場合は、BEGIN ..... END を使用してここにステートメントを含めることができます (これは Delphi の状況と似ています。ストアド プロシージャにも複数の行があることに注意してください。開始 .... 終了) 。
c、handler_action、 これには、上記のステートメントを実行した後に実行するアクションを示します。これには、続行、終了、キャンセルを意味する CONTINUE、EXIT、および UNDO が含まれます (現時点ではサポートされていません)。ここに 2 つのアクションがあります。実際、これら 2 つのアクションは SQLWARNING および NOT FOUND のデフォルトの処理メソッドであり、EXIT は SQLEXCEPTION のデフォルトの処理メソッドです。
別の:
MySQL エラー コードまたは SQLSTATE コードの可読性が低すぎるため、命名条件が導入されています:
文法:
リーリー
リーリー
例:
リーリー
以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。よろしくお願いいたします。