MySQL は、オープン ソースのリレーショナル データベース管理システムです。他のリレーショナル データベース管理システムと比較して、MySQL は最も一般的に使用されているシステムの 1 つです。 MySQL はストアド プロシージャを通じて複雑なデータ処理とビジネス ロジックを実行できるため、データベースのパフォーマンスと効率が向上します。 MySQLストアドプロシージャの実行方法について説明します。
MySQL では、「CREATE PROCEDURE」ステートメントを使用してストアド プロシージャを作成できます。構文は次のとおりです:
CREATE PROCEDURE procedure_name ([IN / OUT / INOUT] parameter_name data_type, [...]) BEGIN -- 存储过程体 END;
その中に:
たとえば、次は単純なストアド プロシージャの例です:
CREATE PROCEDURE hello_world() BEGIN SELECT 'Hello, World!'; END;
ストアド プロシージャを実行するには、「CALL」ステートメントが必要です。構文は次のとおりです。
CALL procedure_name([parameter_value, ...]);
ここで:
たとえば、次のステートメントを使用して、上記で作成した hello_world() ストアド プロシージャを実行できます:
CALL hello_world();
実行結果は次のとおりです:
+-------------+ | Hello, World! | +-------------+ | Hello, World! | +-------------+ 1 row in set (0.00 sec)
IN パラメータを使用してストアド プロシージャに値を渡し、特定の操作を実行します。たとえば、次のストアド プロシージャは、IN パラメータを使用して、指定されたユーザーの詳細を検索します。
CREATE PROCEDURE get_user_details(IN user_id INT) BEGIN SELECT * FROM users WHERE id = user_id; END;
ストアド プロシージャを実行するときは、ユーザー ID をストアド プロシージャに渡す必要があります。たとえば、以下は例です。
CALL get_user_details(1);
実行結果は次のとおりです。
+----+----------+---------+------------+ | id | username | country | created_at | +----+----------+---------+------------+ | 1 | john | USA | 2022-05-01 | +----+----------+---------+------------+ 1 row in set (0.00 sec)
Using OUTparameters can be Removeストアド プロシージャから返された値。たとえば、次のストアド プロシージャは OUT パラメータを使用して、指定されたユーザーの詳細情報を返します。
CREATE PROCEDURE get_user_details(IN user_id INT, OUT username TEXT, OUT country TEXT, OUT created_at DATE) BEGIN SELECT username, country, created_at INTO username, country, created_at FROM users WHERE id = user_id; END;
このストアド プロシージャを実行するときは、ユーザー ID を渡す必要があり、ストアド プロシージャはそのID情報に対応するユーザの詳細情報。たとえば、以下は例です。
CALL get_user_details(1, @username, @country, @created_at); SELECT @username, @country, @created_at;
実行結果は次のとおりです。
+----------+---------+------------+ | @username | @country | @created_at | +----------+---------+------------+ | john | USA | 2022-05-01 | +----------+---------+------------+ 1 row in set (0.00 sec)
Using INOUTparameters can passパラメータを指定し、そのパラメータを使用して値を返します。たとえば、次のストアド プロシージャは INOUT パラメータを使用して、指定されたユーザーの詳細を更新します。
CREATE PROCEDURE update_user_details(INOUT user_id INT, IN username TEXT, IN country TEXT, IN created_at DATE) BEGIN UPDATE users SET username = username, country = country, created_at = created_at WHERE id = user_id; END;
このストアド プロシージャを実行するときは、ユーザー ID と更新される詳細を渡す必要があります。たとえば、次に例を示します。
SET @user_id = 1; CALL update_user_details(@user_id, 'jane', 'UK', '2022-05-01'); SELECT @user_id;
実行結果は次のとおりです。
+---------+ | @user_id | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)
ご覧のとおり、ストアド プロシージャはユーザーの詳細を正常に更新し、ユーザー ID を返しました。
ストアド プロシージャを使用すると、MySQL で効率的なデータ処理とビジネス ロジックを実行できます。この記事では、さまざまな種類のストアド プロシージャを作成、実行、使用する方法について説明します。ストアド プロシージャを使用すると、MySQL データベースのパフォーマンスと効率が大幅に向上し、ビジネスのサポートが向上します。
以上がmysqlストアドプロシージャの実行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。