ホームページ >データベース >mysql チュートリアル >mysqlストアドプロシージャを実行する

mysqlストアドプロシージャを実行する

王林
王林オリジナル
2023-05-08 21:04:362792ブラウズ

MySQL ストアド プロシージャを実行する

MySQL ストアド プロシージャは、プリコンパイルされてサーバーに保存される一連の SQL ステートメントです。入力パラメータを受け入れて出力パラメータを返すことも、SQL クエリを実行して結果セットを生成することもできます。 MySQL ストアド プロシージャを実行すると、データベース アプリケーションの開発プロセスが大幅に簡素化され、データ管理の効率が向上します。以下は、MySQL ストアド プロシージャを実行する手順です。

ステップ 1: ストアド プロシージャを作成する

MySQL では、createprocedure ステートメントを使用してストアド プロシージャを作成できます。構文は次のとおりです。

CREATE [DEFINER = { user | CURRENT_USER }]

PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body

このうち、DEFINER にはストアド プロシージャの作成者のユーザー名を指定します。 DEFIER が指定されていない場合は、デフォルトで現在のユーザーが使用されます。 sp_name はストアド プロシージャの名前で、proc_parameter はストアド プロシージャの入力パラメータと出力パラメータを指定します。特性には、言語タイプ、データ変更方法などのストアド プロシージャの属性が含まれます。 Luke_body は、ストアド プロシージャによって実行される SQL ステートメントのコレクションです。

たとえば、指定された従業員の情報をクエリする単純な MySQL ストアド プロシージャを作成します。入力パラメータとして従業員 ID が必要で、従​​業員の名前、部門名、給与などの情報が返されます。 DDL ステートメントは次のとおりです。

CREATE PROCEDURE get_employee_info(IN emp_id INT)
BEGIN
SELECT emp_name, dept_name,給与
FROM従業員、部門
WHEREemployees.emp_id = emp_id AND
Departments.dept_id =employees.dept_id;
END;

この例では、入力パラメータ emp_id を定義します。これは、情報を照会する従業員 ID を指定するために使用されます。ストアド プロシージャは、SQL SELECT ステートメントを使用して名前、部門名、給与などの情報をクエリし、呼び出し元に返します。

ステップ 2: ストアド プロシージャを実行する

MySQL ストアド プロシージャを実行するには、CALL ステートメントを使用できます。構文は次のとおりです。

CALL sp_name(argument_list);

ここで、sp_name はストアド プロシージャの名前、argument_list はストアド プロシージャに渡されるパラメータ リストです。この例では、次のステートメントを使用してストアド プロシージャを実行できます:

CALL get_employee_info(1001);

これは、従業員 ID が 1001 の従業員の情報をクエリし、追加します。名前、所属 名前、給与などの情報が発信者に返されます。

ストアド プロシージャが結果を返さずにいくつかの SQL ステートメントを実行するだけの場合は、次の構文を使用してストアド プロシージャを実行できます:

EXEC sp_name;

たとえば、以下は、指定した部門の従業員の給与を 2 倍にする単純な MySQL ストアド プロシージャです。これは UPDATE ステートメントを使用して実行されますが、結果は返されません。

CREATE PROCEDURE double_salary(IN dept_name VARCHAR(50))
BEGIN
UPDATE従業員、部門
SET給与 = 給与 * 2
WHEREemployees.dept_id =payments.dept_id AND
Departments.dept_name=dept_name;
END;

このストアド プロシージャを実行するには、次のステートメントを使用できます。

EXEC double_salary('Sales');

これにより、営業部門の全従業員の給与が 2 倍になります。

ステップ 3: ストアド プロシージャを削除する

ストアド プロシージャが不要になった場合は、DROP PROCEDURE ステートメントを使用して削除できます。構文は次のとおりです。

DROP PROCEDURE sp_name;

ここで、sp_name は、削除するストアド プロシージャの名前です。

概要

MySQL ストアド プロシージャは、コーディングとデバッグ作業を大幅に簡素化できる非常に強力なデータベース アプリケーション開発ツールです。ストアド プロシージャを定義すると、SQL コードを関数またはプロシージャにカプセル化できるため、SQL ステートメントを繰り返し記述する作業負荷が軽減され、コードの再利用性と保守性が向上します。したがって、MySQL に関する一定の知識を持つ開発者にとって、ストアド プロシージャの使用に習熟することは非常に重要です。

以上がmysqlストアドプロシージャを実行するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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