mysqlストアドプロシージャの実行

WBOY
リリース: 2023-05-08 16:58:38
オリジナル
1971 人が閲覧しました

MySQL は、オープン ソースのリレーショナル データベース管理システムです。他のリレーショナル データベース管理システムと比較して、MySQL は最も一般的に使用されているシステムの 1 つです。 MySQL はストアド プロシージャを通じて複雑なデータ処理とビジネス ロジックを実行できるため、データベースのパフォーマンスと効率が向上します。 MySQLストアドプロシージャの実行方法について説明します。

  1. ストアド プロシージャの作成

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

CREATE PROCEDURE procedure_name ([IN / OUT / INOUT] parameter_name data_type, [...])
BEGIN
    -- 存储过程体
END;
ログイン後にコピー

その中に:

  • procedure_name: ストアド プロシージャの名前。
  • IN / OUT / INOUT: ストアド プロシージャのパラメーター タイプ。IN は入力パラメーターを表し、OUT は出力パラメーターを表し、INOUT は入力パラメーターと出力パラメーターを表します。
  • parameter_name: パラメータの名前。
  • data_type: パラメータのデータ型。MySQL でサポートされている任意のデータ型を指定できます。
  • ストアド プロシージャ本体: ストアド プロシージャが実際に実行するコード ブロック

たとえば、次は単純なストアド プロシージャの例です:

CREATE PROCEDURE hello_world()
BEGIN
    SELECT 'Hello, World!';
END;
ログイン後にコピー
  1. ストレージ プロシージャの実行

ストアド プロシージャを実行するには、「CALL」ステートメントが必要です。構文は次のとおりです。

CALL procedure_name([parameter_value, ...]);
ログイン後にコピー

ここで:

  • procedure_name: 実行するストアド プロシージャの名前。
  • parameter_value: ストアド プロシージャに渡されるパラメータ値。

たとえば、次のステートメントを使用して、上記で作成した hello_world() ストアド プロシージャを実行できます:

CALL hello_world();
ログイン後にコピー

実行結果は次のとおりです:

+-------------+
| Hello, World! |
+-------------+
| Hello, World! |
+-------------+
1 row in set (0.00 sec)
ログイン後にコピー
  1. IN パラメータを使用する

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)
ログイン後にコピー
  1. Using OUTparameters

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)
ログイン後にコピー
  1. Using INOUTparameters

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

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