ホームページ >データベース >mysql チュートリアル >mysqlデータベースのストアドプロシージャの詳しい説明

mysqlデータベースのストアドプロシージャの詳しい説明

PHPz
PHPzオリジナル
2023-04-17 16:38:161425ブラウズ

1. はじめに

MySQL は、SQL ステートメントを使用してデータを操作する一般的なリレーショナル データベース管理システム (RDBMS) です。ストアド プロシージャは、繰り返し使用および呼び出しできる SQL ステートメントのコレクションです。この記事では、MySQL データベースにおけるストアド プロシージャの作成、呼び出し、インスタンス操作について紹介します。

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

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

MySQL でストアド プロシージャを作成するには、次のステートメントを使用できます:

CREATE PROCEDURE procedure_name ([parameter_list])
BEGIN
    -- put your SQL statements here;
END;
  • procedure_name: ストアド プロシージャ名。
  • parameter_list: パラメータ リスト。空でもかまいません。
  • BEGIN および END: SQL ステートメントの開始文字と終了文字。
  1. ストアド プロシージャのパラメータ

ストアド プロシージャには 0 個以上のパラメータを含めることができます。構文は次のとおりです:

CREATE PROCEDURE procedure_name (IN|OUT|INOUT parameter_name data_type)

の意味送信パラメータ型と受信パラメータ型にそれぞれ渡される、parameter_namedata_type は、それぞれパラメータ名とデータ型を表します。

    #例
パラメータを使用してストアド プロシージャを作成する例を次に示します:

CREATE PROCEDURE get_employee (IN employee_id INT)
BEGIN
    SELECT * FROM employee WHERE id = employee_id;
END;
3. MySQL ストアド プロシージャの呼び出し

ストアド プロシージャを使用して、MySQL に複雑なビジネス ロジックを実装します。ストアド プロシージャを呼び出すには、次のステートメントを使用できます:

CALL procedure_name (parameter_list);
たとえば、上記で作成したストアド プロシージャを使用する場合、次のステートメントを使用して呼び出すことができます:

CALL get_employee(1);
4. MySQLストアド プロシージャの例

アカウント転送操作を実装するための実際の例を以下で見てみましょう。

    転送ストアド プロシージャを作成する
  1. CREATE PROCEDURE transfer(IN from_account INT, IN to_account INT, IN amount DECIMAL(10,2))
    BEGIN
        DECLARE from_balance DECIMAL(10,2);
        DECLARE to_balance DECIMAL(10,2);
    
        START TRANSACTION;
    
        SELECT balance INTO from_balance FROM account WHERE id = from_account FOR UPDATE;
        SELECT balance INTO to_balance FROM account WHERE id = to_account FOR UPDATE;
    
        IF from_balance < amount THEN
            ROLLBACK;
            SELECT 'Insufficient balance' AS message;
        ELSE
            UPDATE account SET balance = from_balance - amount WHERE id = from_account;
            UPDATE account SET balance = to_balance + amount WHERE id = to_account;
            COMMIT;
            SELECT 'Transfer succeed!' AS message;
        END IF;
    END;
    ストアド プロシージャを呼び出す
次のステートメントを使用してストアド プロシージャを呼び出すことができます。手順:

CALL transfer(1, 2, 100);
アカウントID 1のユーザーからアカウントID 2のユーザーに100元を送金します。

上記は MySQL データベース ストアド プロシージャの基本的な操作です。もちろん、実際の開発ではストアド プロシージャを使用する必要があるシナリオがさらに多くなり、開発者は実際のニーズに応じてストアド プロシージャを設計して呼び出す必要があります。 。

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

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