ホームページ  >  記事  >  データベース  >  mysql ストアド プロシージャの例外処理分析_MySQL

mysql ストアド プロシージャの例外処理分析_MySQL

WBOY
WBOYオリジナル
2016-10-09 08:33:37910ブラウズ

例外キャプチャのタイプと処理メソッドを定義します:

リーリー

ここで注意すべき点がいくつかあります:

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 つのカテゴリは、対応するタイプのエラーの処理です。これは、3 つのメソッド 4、5、および 6 を含む、特定のグループのエラーの処理です。これにより、condition_value が導入されます。もう 1 つ注意すべきことは、デフォルトで MySQL 独自のエラー処理メカニズムが存在することです (つまり、エラーを処理するメソッド (ハンドラー) が定義されていません)。

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 のデフォルトの処理メソッドです。
別の:


condition_name: 条件の命名

MySQL エラー コードまたは SQLSTATE コードの可読性が低すぎるため、命名条件が導入されています:

文法:


リーリー

使用:

リーリー


例:

リーリー

以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。よろしくお願いいたします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。