ホームページ >データベース >mysql チュートリアル >mysqlデータベースのストアドプロシージャの詳しい説明
1. はじめに
MySQL は、SQL ステートメントを使用してデータを操作する一般的なリレーショナル データベース管理システム (RDBMS) です。ストアド プロシージャは、繰り返し使用および呼び出しできる SQL ステートメントのコレクションです。この記事では、MySQL データベースにおけるストアド プロシージャの作成、呼び出し、インスタンス操作について紹介します。
2. MySQL ストアド プロシージャの作成
MySQL でストアド プロシージャを作成するには、次のステートメントを使用できます:
CREATE PROCEDURE procedure_name ([parameter_list]) BEGIN -- put your SQL statements here; END;
procedure_name
: ストアド プロシージャ名。 parameter_list
: パラメータ リスト。空でもかまいません。 BEGIN
および END
: SQL ステートメントの開始文字と終了文字。 ストアド プロシージャには 0 個以上のパラメータを含めることができます。構文は次のとおりです:
CREATE PROCEDURE procedure_name (IN|OUT|INOUT parameter_name data_type)
の意味送信パラメータ型と受信パラメータ型にそれぞれ渡される、parameter_name
と data_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ストアド プロシージャの例 アカウント転送操作を実装するための実際の例を以下で見てみましょう。
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 サイトの他の関連記事を参照してください。