ホームページ > データベース > mysql チュートリアル > MySQL プロシージャと関数のいくつかの例について話しましょう

MySQL プロシージャと関数のいくつかの例について話しましょう

PHPz
リリース: 2023-04-20 10:32:12
オリジナル
619 人が閲覧しました

MySQL は、広く使用されているオープンソースのリレーショナル データベース管理システムです。 MySQL はデータの保存と管理に使用でき、複数のプログラミング言語とオペレーティング システムをサポートし、拡張性が高くなります。

MySQL プロシージャと関数は、開発者が構造化された方法で複雑な SQL クエリを作成および整理できるようにする便利なツールです。 MySQL ストアド プロシージャは、一連の SQL ステートメントで構成されるコード ブロックです。関数もコードのブロックですが、値を返すだけです。

この記事では、MySQL でのプロシージャと関数の作成と呼び出し、およびストアド プロシージャと関数の記述方法を紹介します。この記事では、読者がこれらの関数の使用法をよりよく理解できるように、MySQL プロシージャと関数の例もいくつか紹介します。

MySQL プロシージャと関数の作成

MySQL には、ストアド プロシージャと関数を作成するための CREATE PROCEDURE と CREATE FUNCTION という 2 つのコマンドが用意されています。これらのコマンドでは、プロシージャまたは関数の名前とパラメータ、およびプロシージャまたは関数に含めることができる SQL ステートメントを指定する必要があります。

ストアド プロシージャを作成するための構文は次のとおりです。

CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name ([proc_parameter[,...]])
BEGIN
    proc_body;
END;
ログイン後にコピー

このうち、DEFINER パラメータはプロセスの所有権を持つユーザーを指定します。デフォルトは現在のユーザーです。 PROCEDURE キーワードの後に​​プロシージャ名が続き、プロシージャのパラメータは括弧内に指定されます。

次は、単純な MySQL ストアド プロシージャです:

CREATE PROCEDURE simple_sp (IN x INT, OUT y INT)
BEGIN
    SET y = x * x;
END;
ログイン後にコピー

ストアド プロシージャの名前は simple_sp です。このプロシージャは入力パラメータ x と出力パラメータ y を使用します。プロシージャは入力パラメータを変換します。パラメータ x の 2 乗が出力パラメータ y に割り当てられます。

関数を作成するための構文は、ストアド プロシージャを作成する場合と似ています。以下は単純な MySQL 関数です:

CREATE FUNCTION simple_func (x INT) RETURNS INT
BEGIN
    RETURN x * x;
END;
ログイン後にコピー

関数名は simple_func で、入力パラメータ x を使用し、パラメータの 2 乗を返します。

MySQL プロシージャと関数の呼び出し

ストアド プロシージャと関数の呼び出し方法は同じです。 CALL ステートメントを使用して、プロシージャまたは関数のパラメーターをステートメントに渡します。次に、simple_sp ストアド プロシージャを呼び出す例を示します。

CALL simple_sp(3, @y);
SELECT @y;
ログイン後にコピー

上記のステートメントは、x の 2 乗を計算し、結果を y 変数に保存した後、y の値を画面に出力します。

simple_func 関数を呼び出すための構文は次のようになります。

SELECT simple_func(3);
ログイン後にコピー

このステートメントは simple_func 関数を呼び出し、3 の 2 乗を返します。

MySQL ストアド プロシージャと関数の作成

MySQL プロシージャと関数には、IF ステートメント、LOOP ステートメント、WHILE ステートメントなどを含む複数の SQL ステートメントとフロー制御ステートメントを含めることができます。

以下は、employees テーブルから最も給与が高い従業員を選択する MySQL ストアド プロシージャの例です:

CREATE PROCEDURE get_highest_salary ()
BEGIN
    DECLARE highest_salary DECIMAL(10,2);
    DECLARE emp_id INT;
    
    SELECT MAX(salary) INTO highest_salary FROM employees;
    SELECT id INTO emp_id FROM employees WHERE salary = highest_salary;
    
    SELECT * FROM employees WHERE id = emp_id;
END;
ログイン後にコピー

ストアド プロシージャは 2 つの変数、highest_salary と emp_id を宣言します。次に、従業員テーブルの最高給与を取得します。 SELECT ステートメントを使用して最高給与を highest_salary 変数に格納し、別の SELECT ステートメントを使用してその最高給与を持つ従業員の ID を emp_id 変数に格納します。最後に、このプロセスでは、最も給与が高い従業員の詳細がすべて選択されます。

以下は、指定された年齢パラメータに基づいて従業員テーブル内の従業員数を返す MySQL 関数の例です:

CREATE FUNCTION get_employee_count (age INT) RETURNS INT
BEGIN
    DECLARE employee_count INT;
    
    SELECT COUNT(*) INTO employee_count FROM employees WHERE age = age;
    
    RETURN employee_count;
END;
ログイン後にコピー

この関数は、変数employee_countを宣言します。 SELECT ステートメントは、指定された年齢の従業員の数を取得し、その値を返します。

結論

MySQL のプロシージャと関数は、開発者が構造化された方法で複雑な SQL クエリを作成および整理できるようにする便利なツールです。ストアド プロシージャとストアド関数には複数の SQL ステートメントとフロー制御ステートメントを含めることができるため、コードがより柔軟で保守しやすくなります。この記事では、MySQL でのストアド プロシージャと関数の作成、呼び出し、記述に関する基本的な知識を紹介し、読者がこれらの関数の使用法をより深く理解できるようにいくつかの例を示します。

以上がMySQL プロシージャと関数のいくつかの例について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート