Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.5.1 PREPARE 構文

PREPARE stmt_name FROM preparable_stmt

PREPARE ステートメントは SQL ステートメントを準備し、それに名前 stmt_name を割り当てます。この名前は、あとでそのステートメントを参照するために使用されます。この準備済みステートメントは EXECUTE で実行され、DEALLOCATE PREPARE で解放されます。例については、セクション13.5「準備済みステートメントのための SQL 構文」を参照してください。

ステートメント名は大文字と小文字が区別されません。preparable_stmt は、SQL ステートメントのテキストを含む文字列リテラルまたはユーザー変数のどちらかです。このテキストは複数のステートメントではなく、1 つのステートメントを表している必要があります。このステートメント内では、? 文字を、あとでクエリーを実行するときに、そのクエリーのどこにデータ値をバインドするかを示すパラメータマーカーとして使用できます。文字列値にバインドしようとしている場合でも、? 文字を引用符で囲んではいけません。パラメータマーカーは、SQL キーワードや識別子などではなく、データ値を指定するべき場所にしか使用できません。

指定された名前を持つ準備済みステートメントがすでに存在する場合、そのステートメントは、新しいステートメントが準備される前に暗黙的に解放されます。つまり、新しいステートメントにエラーが含まれていて準備できない場合は、エラーが返され、指定された名前を持つステートメントは存在しなくなります。

準備済みステートメントのスコープは、そのステートメントが作成されたセッションです。これには、次のいくつかの注意点があります。

  • あるセッションで作成された準備済みステートメントを別のセッションで使用することはできません。

  • セッションが (正常または異常にかかわらず) 終了すると、その準備済みステートメントは存在しなくなります。自動再接続が有効になっていると、クライアントには接続が失われたことが通知されません。このため、クライアントは自動再接続を無効にすることが必要になる場合があります。セクション23.8.16「自動再接続動作の制御」を参照してください。

  • ストアドプログラム内で作成された準備済みステートメントは、そのプログラムが実行を完了したあとも引き続き存在し、あとでそのプログラムの外部で実行できます。

  • ストアドプログラムのコンテキストで準備されたステートメントは、ストアドプロシージャーやストアドファンクションのパラメータまたはローカル変数を参照できません。これらは、そのプログラムが終了するとスコープから外れ、このステートメントがあとでプログラムの外部で実行されたときに使用できなくなるためです。回避方法として、代わりに、同様にセッションスコープを持つユーザー定義変数を参照します。セクション9.4「ユーザー定義変数」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.