ホームページ > データベース > mysql チュートリアル > Create Procedureステートメントを使用して、MySQLにストアドプロシージャをどのように作成しますか?

Create Procedureステートメントを使用して、MySQLにストアドプロシージャをどのように作成しますか?

Johnathan Smith
リリース: 2025-03-19 15:55:29
オリジナル
554 人が閲覧しました

Create Procedureステートメントを使用して、MySQLにストアドプロシージャをどのように作成しますか?

MySQLでストアドプロシージャを作成するには、 CREATE PROCEDUREステートメントを使用します。これを行う方法に関する段階的なガイドを次に示します。

  1. 作成手順ステートメントを開始しますCREATE PROCEDUREを作成してから、その後の手順の名前が続きます。
  2. 定義パラメーター(存在する場合) :手順に入力パラメーターが必要な場合は、手順名の直後に括弧内に定義します。パラメーターには、 INOUT 、またはINOUTなどのモードがあり、各パラメーターにはデータ型が必要です。
  3. 手順本文を定義します:手順本体は、 BEGINブロックとENDブロックに囲まれています。このブロック内で、手順が実行されるSQLステートメントを書きます。
  4. 終了ステートメント:デフォルトでは、MySQLはSemicolon( ; )をステートメントターミネーターとして使用します。ただし、ストアドプロシージャを作成するときは、手順本体で使用されているセミコロンとの競合を避けるために、この区切り文字を一時的に変更する必要があります。通常、 //または$$は代替デリミターとして使用されます。

簡単なストアドプロシージャを作成する方法の例は次のとおりです。

 <code class="sql">DELIMITER // CREATE PROCEDURE GetEmployeeData( IN employeeID INT ) BEGIN SELECT * FROM employees WHERE id = employeeID; END // DELIMITER ;</code>
ログイン後にコピー

この例では、 GetEmployeeDataemployeeID入力パラメーターとして取得し、従業員のすべてのデータをemployeesテーブルから返す手順です。

MySQLストアドプロシージャにどのようなパラメーターを含めることができますか?

MySQLストアドプロシージャには、さまざまなタイプとモードのパラメーターを含めることができます。パラメーターは、3つのモードに分類できます。

  1. In :これはデフォルトモードです。 INパラメーターを使用すると、値を手順に渡すことができます。手順ではこの値を読み取ることができますが、変更することはできません。
  2. OUTOUTパラメーターを使用すると、手順が呼び出し環境に値を返すことができます。手順は、 OUTパラメーターの値を変更でき、手順の実行後に変更された値にアクセスできます。
  3. INOUTINOUTパラメーターは、 INおよびOUTのプロパティを組み合わせます。これにより、値を手順に渡すことができ、プロシージャが値を変更し、呼び出し環境に戻すことができます。

パラメーターには、 INTVARCHARDATEなどのデータ型も持つことができ、それらを宣言するときに指定する必要があります。これは、3種類のパラメーターすべてを備えたストアドプロシージャの例です。

 <code class="sql">DELIMITER // CREATE PROCEDURE ProcessEmployeeData( IN empID INT, OUT empName VARCHAR(100), INOUT empSalary DECIMAL(10, 2) ) BEGIN SELECT first_name, last_name INTO empName FROM employees WHERE id = empID; UPDATE employees SET salary = empSalary 1000 WHERE id = empID; SELECT salary INTO empSalary FROM employees WHERE id = empID; END // DELIMITER ;</code>
ログイン後にコピー

MySQLの既存のストアドプロシージャをどのように変更できますか?

MySQLの既存のストアドプロシージャを変更するには、 ALTER PROCEDUREステートメントを使用します。ただし、 ALTER PROCEDURE 、その特性(セキュリティコンテキストやSQLセキュリティなど)など、手順の特定の属性を変更することに限定されています。手順内で実際のコードまたはロジックを変更するには、 DROP PROCEDUREを使用してCREATE PROCEDURE必要があります。

これがそれを行う方法です:

  1. 既存の手順を削除します
 <code class="sql">DROP PROCEDURE IF EXISTS ProcedureName;</code>
ログイン後にコピー
  1. 新しい定義で手順を再作成します
 <code class="sql">DELIMITER // CREATE PROCEDURE ProcedureName( -- Parameters ) BEGIN -- New procedure body END // DELIMITER ;</code>
ログイン後にコピー

たとえば、 GetEmployeeData手順を更新して、従業員の最初と姓のみを返す場合は、次のことを行います。

 <code class="sql">DROP PROCEDURE IF EXISTS GetEmployeeData; DELIMITER // CREATE PROCEDURE GetEmployeeData( IN employeeID INT ) BEGIN SELECT first_name, last_name FROM employees WHERE id = employeeID; END // DELIMITER ;</code>
ログイン後にコピー

データベース管理にMySQLでストアドプロシージャを使用することの利点は何ですか?

ストアドプロシージャは、MySQLのデータベース管理にいくつかの利点を提供します。

  1. パフォーマンスの改善:ストアドプロシージャがコンパイルされ、データベースに保存されているため、個々のSQLステートメントの実行と比較して実行が速くなります。また、1回の呼び出し内で複数の操作を実行することにより、ネットワークトラフィックを削減することもできます。
  2. コードの再利用性:ストアドプロシージャは、複数のアプリケーションとスクリプトで再利用でき、コードの複製を削減し、メンテナンスを容易にすることができます。
  3. セキュリティの強化:ストアドプロシージャ内でロジックをカプセル化することにより、基礎となるテーブルとデータへのアクセスを制御できます。ユーザーは、動作するテーブルに直接アクセスできずに、手順の実行権を実行することができます。
  4. 簡素化されたメンテナンス:ビジネスロジックの変更は、複数のアプリケーションコードベースではなく、1つの場所(ストアドプロシージャ)で行うことができます。この集中化により、メンテナンスが簡素化され、一貫性が保証されます。
  5. トランザクション制御:ストアドプロシージャは、トランザクションをより効果的に管理し、複数の操作にわたってデータの整合性と一貫性を確保できます。
  6. 開発時間の短縮:ストアドプロシージャを使用すると、開発者は複雑なSQLクエリを繰り返し作成するのではなく、高レベルのアプリケーションロジックに集中できます。
  7. 移植性:ストアドプロシージャは、あるMySQLサーバーから別のMySQLサーバーに簡単に移動できます。これは、データベースが頻繁に移行または複製される環境に有益です。

これらの利点を活用することにより、ストアドプロシージャはMySQLのデータベース管理の効率とセキュリティを大幅に向上させることができます。

以上がCreate Procedureステートメントを使用して、MySQLにストアドプロシージャをどのように作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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