ホームページ  >  記事  >  データベース  >  mysqlストアドプロシージャの使用

mysqlストアドプロシージャの使用

WBOY
WBOYオリジナル
2023-05-18 13:40:382195ブラウズ

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 サイトの他の関連記事を参照してください。

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