MySQL ストアド プロシージャの使用
MySQL は、ストアド プロシージャ関数が組み込まれた一般的なリレーショナル データベース管理システムです。ストアド プロシージャは、MySQL データベースにカプセル化された再利用可能なコード ブロックで、特定のタスクの実行やデータベースの操作に使用できます。この記事では、作成、呼び出し、パラメータの受け渡し、デバッグなど、MySQL ストアド プロシージャの使用方法を紹介します。
1. ストアド プロシージャを作成する
MySQL では、CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成できます。次に、ストアド プロシージャを作成する簡単な例を示します。
CREATE PROCEDURE get_students() BEGIN SELECT * FROM students; END;
この例では、get_students という名前のストアド プロシージャを作成します。このストアド プロシージャには、students テーブルからすべての行を選択する SELECT ステートメントのみが含まれています。 CREATE PROCEDURE ステートメントでは、BEGIN キーワードと END キーワードを使用してストアド プロシージャの本体を定義します。ストアド プロシージャの本体は、一連の SQL ステートメントと制御構造です。
ストアド プロシージャを作成するときは、1 つ以上の入力パラメータと出力パラメータを指定して、プロシージャ呼び出しからデータを渡すことができます。以下は、入力パラメーターの使用例です。
CREATE PROCEDURE get_student_grade(IN student_id INT) BEGIN SELECT grade FROM grades WHERE student_id = student_id; END;
この例では、student_id という名前の整数入力パラメーターを受け入れる get_student_grade という名前のストアド プロシージャを作成しました。プロセス本体は、このパラメータを使用して、成績テーブル内でこの学生 ID に関連付けられた成績を検索します。
2. ストアド プロシージャの呼び出し
ストアド プロシージャを呼び出すには、CALL ステートメントを使用し、その後にストアド プロシージャ名と適切なパラメータ (存在する場合) を指定します。次に、get_students ストアド プロシージャを呼び出す例を示します。
CALL get_students();
CALL ステートメントの実行後、MySQL はストアド プロシージャ本体のすべてのステートメントを実行し、結果セット (存在する場合) をコンソールに表示します。
入力パラメータを使用してストアド プロシージャを呼び出すには、パラメータ値を CALL ステートメントのパラメータとして渡します。次は、 get_student_grade ストアド プロシージャを呼び出す例です。student_id という名前の整数パラメータを指定する必要があります:
CALL get_student_grade(123);
この例では、 get_student_grade という名前のストアド プロシージャを呼び出し、パラメータ値を 123 に設定します。 MySQL はプロセス内で SELECT ステートメントを実行し、関連するスコア データを返します。
3. パラメータを渡す
MySQL ストアド プロシージャは、入力パラメータ、出力パラメータ、入出力パラメータという 3 種類のパラメータをサポートします。入力パラメータは MySQL プロシージャの呼び出し元からのパラメータ値のみを渡すことができ、出力パラメータは結果を呼び出し元に返すことのみができますが、入力パラメータと出力パラメータはプロシージャ内の値の読み取りと書き込みが可能です。
入力パラメータを定義するには、CREATE PROCEDURE ステートメントでパラメータ名とデータ型を指定します。以下は、入力パラメータを定義する例です。
CREATE PROCEDURE get_student(IN student_id INT) BEGIN SELECT * FROM students WHERE id = student_id; END;
この例では、student_id という名前の整数入力パラメータを受け入れる get_student という名前のストアド プロシージャを作成します。プロシージャ本体は、このパラメータを使用して、students テーブルから学生に関するすべての行を選択します。
出力パラメータまたは入出力パラメータを定義するには、次の CREATE PROCEDURE ステートメントで OUT パラメータを使用します。
CREATE PROCEDURE get_average_grade(IN student_id INT, OUT avg_grade DECIMAL(5,2)) BEGIN SELECT AVG(grade) INTO avg_grade FROM grades WHERE student_id = student_id; END;
この例では、整数を受け入れる get_average_grade という名前のストアド プロシージャを作成しました。 Student_id という名前の入力パラメータを返し、avg_grade という名前の DECIMAL 型の出力パラメータを返します。プロシージャの本体では、student_id パラメータを使用して成績テーブル内のこの生徒に関連するすべての行を検索し、AVG 関数を使用して平均スコアを計算します。結果は avg_grade パラメータに格納され、プロシージャの呼び出し元が結果を取得するのを待ちます。
4. ストアド プロシージャのデバッグ
複雑なストアド プロシージャを開発する場合、デバッグ中にエラーが発生する可能性があります。 MySQL ストアド プロシージャのデバッグを支援するために、次のコマンドを使用してストアド プロシージャのトレース モードを有効にできます:
SET GLOBAL log_bin_trust_function_creators=1;
このコマンドにより、MySQL はストアド プロシージャの呼び出しをログに記録できるため、エラーや問題のチェックが容易になります。 。
もう 1 つの便利なデバッグ ツールは、MySQL ストアド プロシージャ デバッガーです。 MySQL Workbench などのビジュアル ツールを使用して、ストアド プロシージャをデバッグし、コード内のエラーをチェックできます。
概要
MySQL ストアド プロシージャは、一般的に使用されるタスクと操作を再利用可能なコード ブロックにカプセル化するために使用できる強力なツールです。ストアド プロシージャは、入力パラメータ、出力パラメータ、入出力パラメータをサポートし、制御構造と組み込み関数を使用して SQL ステートメントを実行できます。 MySQL の CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成し、CALL ステートメントを使用してストアド プロシージャを呼び出します。ストアド プロシージャをデバッグするには、トレース モードまたは MySQL のビジュアル ストアド プロシージャ デバッガを使用します。
以上がmysqlストアドプロシージャの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。