MySQL は、ストアド プロシージャやストアド関数などのデータベース オブジェクトの作成と使用をサポートする、一般的なリレーショナル データベース管理システムです。この記事では、MySQL ストアド プロシージャとストアド関数の概念、使用法、構文、例について詳しく説明します。
1. ストアド プロシージャとストアド関数とは何ですか?
ストアド プロシージャとストアド関数は、MySQL の 2 種類のデータベース オブジェクトです。これらはすべて MySQL サーバー側で作成でき、他のクライアント プログラムから呼び出して実行できます。これらに共通しているのは、一連の SQL ステートメントをカプセル化し、複雑なデータベース操作やビジネス ロジックを実装できることです。
ストアド プロシージャ (ストアド プロシージャ) は、他のプログラミング言語のサブルーチンや関数に似た、事前定義された SQL ステートメントのセットです。これらは単一の SQL ステートメントとして記述され、サーバーに保存され、必要なときに呼び出すことができます。ストアド プロシージャを使用すると、データのバッチ処理、トランザクションの実行、高速クエリなど、特定のビジネス要件を実装できます。ストアド プロシージャは、実行時にパラメータを受け入れることができ、実行後に結果を返すこともできます。
ストアド ファンクション (ストアド ファンクション) は、SQL クエリで呼び出すことができるプロシージャであり、入力パラメータを受け取り、単一の値を返します。ストアド プロシージャと同様に、ストアド関数も SQL ステートメントのコレクションです。ストアド関数は通常、値を計算、変換、または操作し、結果を呼び出し元に返すために使用されます。ストアド プロシージャとは異なり、ストアド関数は単一の値のみを返すことができ、一連の結果を返すことはできません。ストアド関数は、クエリやレポートで広く使用されています。
2. ストアド プロシージャとストアド ファンクションの利点
3. ストアド プロシージャの作成と使用
ストアド プロシージャを作成するための構文は次のとおりです:
CREATE PROCEDURE procedure_name ([IN | OUT | INOUT] parameter datatype [, …]) BEGIN SQL statements; END;
たとえば、次のストアド プロシージャは金額と顧客 ID を入力し、その金額を顧客アカウント残高に追加します:
CREATE PROCEDURE add_amount(IN amt INT, IN cust_id INT) BEGIN UPDATE customers SET balance = balance + amt WHERE id = cust_id; END;
ストアド プロシージャを呼び出すための構文は次のとおりです。
CALL procedure_name([parameter_value]);
たとえば、次のコードでは、作成したばかりの add_amount() ストアド プロシージャが呼び出されます。
CALL add_amount(100, 1);
上記のコードは、ID 1 の顧客の残高を 100 元増加させます。顧客テーブル。
4. ストアド関数の作成と使用
ストアド関数を作成するための構文は次のとおりです:
CREATE FUNCTION function_name ([parameter datatype [, …]]) RETURNS datatype BEGIN SQL statements; RETURN return_value; END;
たとえば、次の例では、平均を計算するためのストアド ファンクションを作成します。 #
CREATE FUNCTION average (a INT, b INT) RETURNS INT BEGIN DECLARE result INT; SET result = (a + b) / 2; RETURN result; END;
SELECT function_name([parameter_value]);たとえば、次のコードです。作成したばかりのaverage()ストアド関数を呼び出します:
SELECT average(10, 20);上記のコードは、(10 20)/2の結果である15を返します。 5. ストアド プロシージャとストアド関数の例
CREATE PROCEDURE calc_avg_age() BEGIN DECLARE avg_age FLOAT; SELECT AVG(YEAR(CURDATE()) - YEAR(birth_date)) INTO avg_age FROM customers; INSERT INTO statistics (name, value) VALUES ('avg_age', avg_age); END;
CREATE FUNCTION days_between (date1 DATE, date2 DATE) RETURNS INT BEGIN DECLARE num_days INT; SET num_days = DATEDIFF(date2, date1); RETURN num_days; END;さて、クリスマスから 2022 年の新年までの日数を知りたいのですが、次のコードを使用して上記のストアド関数を呼び出すことができます:
SELECT days_between('2022-12-25', '2023-01-01');上記のコードは、間の日数である 7 を返します。 2 つの日付の日数。 6. 結論これまで、MySQL ストアド プロシージャとストアド関数の概念、構文、例を理解しました。これらのオブジェクトは、SQL コードをより適切に整理し、データベースのパフォーマンスと保守性を向上させるのに役立ちます。実際のアプリケーションでは、ストアド プロシージャとストアド ファンクションは、データ ウェアハウス、ビジネス インテリジェンス、アプリケーション、その他の分野で広く使用されています。ただし、コードの可読性と保守性が低下する可能性があるため、過度に使用しないように注意してください。
以上がmysqlストアドプロシージャストアドファンクションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。