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

王林
リリース: 2023-05-08 21:50:37
オリジナル
4398 人が閲覧しました

MySQL ストアド プロシージャは MySQL の重要な機能であり、一連の SQL ステートメントを 1 つのユニットにカプセル化し、特定の操作やビジネス ロジックの処理を完了するために使用できます。

ストアド プロシージャは、データベース内のデータにアクセスしたり、プロセス制御に SQL ステートメントを使用したり、エラーを処理するために条件付きステートメントを使用したりできます。ストアド プロシージャを使用すると、データベース アプリケーションの開発と保守のプロセスが簡素化され、プログラムの再利用性と保守性が向上します。

この記事では、ストアド プロシージャの基本概念、作成方法、構文構造、およびアプリケーション例を紹介します。

1. 基本概念

  1. ストアド プロシージャとは何ですか?

ストアド プロシージャは、MySQL データベースに保存できる一連の SQL ステートメントであり、これらの SQL ステートメントを実行する必要があるときに、ストアド プロシージャを呼び出すことができます。

  1. ストアド プロシージャの役割は何ですか?

ストアド プロシージャは、よく使用される SQL ステートメントのセットを 1 つのユニットにカプセル化できます。これを使用するときは、このユニットを呼び出すだけで済み、データベースのパフォーマンス、セキュリティ、保守性が向上します。

  1. ストアド プロシージャの利点は何ですか?

(1) 優れたパフォーマンス: ストアド プロシージャはサーバー側で実行されるため、ネットワーク送信とデータ処理時間が削減され、データベースのパフォーマンスが向上します。

(2) 安全性と信頼性: ストアド プロシージャは、権限制御を通じてセキュリティ管理を実現し、権限のないユーザーによるデータベースへのアクセスや変更を防ぐことができます。

(3) 高い保守性: 頻繁に使用する SQL ステートメントをストアド プロシージャにカプセル化すると、コードの再利用性が向上し、プログラムの開発と保守の困難さが軽減されます。

2. 作成方法

MySQL でのストアド プロシージャの作成は比較的簡単で、MySQL クライアントで CREATE PROCEDURE ステートメントを入力するだけです。

CREATE PROCEDURE ストアド プロシージャ名 (パラメータ リスト)
BEGIN

 SQL语句; 
ログイン後にコピー

END;

CREATE: ステートメントを作成するためのキーワード。

PROCEDURE: 作成されるオブジェクトがストアド プロシージャであることを示します。

ストアド プロシージャ名: 作成されたストアド プロシージャの名前。

パラメータ リスト: ストアド プロシージャのパラメータ リスト。パラメーターは、入力パラメーター、出力パラメーター、または入力パラメーターと出力パラメーターの混合にすることができます。

BEGIN と END: BEGIN と END はストアド プロシージャの本体を定義するために使用されます。 BEGIN と END の間で、一連の SQL ステートメントを定義して、ストアド プロシージャの操作とビジネス ロジックを実装できます。

3. 構文構造

上の例では、ストアド プロシージャの基本的な構文構造を紹介しました。 CREATE PROCEDURE ステートメントに加えて、ストアド プロシージャには次のステートメントとコンポーネントが含まれます。

  1. パラメータ リスト

ストアド プロシージャを作成するときは、ストアド プロシージャにデータを渡すためのパラメータを 0 個以上指定できます。ストアド プロシージャのパラメータは 3 つのカテゴリに分類できます。

(1) 入力パラメータ: ストアド プロシージャにデータを渡すために使用されます。これは読み取りのみが可能で、ストアド プロシージャ内で変更することはできません。

(2) 出力パラメータ: ストアド プロシージャからデータを返すために使用され、ストアド プロシージャの実行後、データを呼び出し元に渡すことができます。

(3) 入出力パラメータ: データを入力パラメータとして渡すことも、処理結果を出力パラメータとして呼び出し元に返すこともできます。

ストアド プロシージャを作成するときは、パラメーター名、パラメーター タイプ、およびパラメーター修飾子を使用してパラメーター タイプを定義する必要があります。

  1. 変数

ストアド プロシージャでは、一時データや計算結果を保存するローカル変数またはグローバル変数を定義できます。

変数定義形式:

DECLARE 変数名のデータ型 [DEFAULT デフォルト値];

  1. 制御文

格納されているプロシージャでは、制御文を使用してプロセス制御、条件判定、例外処理などを実現できます。制御ステートメントには、次の一般的な操作が含まれます。

(1) IF 文:条件判定や分岐演算を行うための文です IF 文の構文形式は、

IF 条件 THEN 文 1 ELSEIF 条件 THEN 文 2 ELSE 文 3 END IF;

(2) WHILE 文: ループ処理に使用され、特定の条件が満たされた場合、条件が不成立になるか終了条件が満たされるまで、一連のステートメントをループで実行できます。ループが終了します。 WHILE ステートメントの構文形式は次のとおりです。

WHILE 条件付き DO ステートメント END WHILE;

(3) CASE ステートメント: 複数条件の分析と分岐選択に使用される、CASE の構文形式ステートメントは次のとおりです:

CASE 式
WHEN 値 1 THEN ステートメント 1
WHEN 値 2 THEN ステートメント 2
. . .
ELSE ステートメント n
END CASE;

( 4) 例外処理ステートメント: 例外を処理するために使用されます。一般的に使用される例外処理ステートメントには、SIGNAL、RESIGNAL、および HANDLER が含まれます。具体的な使用方法については、MySQL 公式ドキュメントを参照してください。

4. アプリケーション例

以下は、簡単な MySQL ストアド プロシージャの例です。

CREATE PROCEDURE GetStudent(IN id INT, OUT name VARCHAR(20))
BEGIN
SELECT Student_name INTO name FROM Student WHERE Student_id = id;
END;

この例では、GetStudent という名前のストアド プロシージャを作成し、これには id と name の 2 つのパラメータがあり、id はクエリ対象の学生番号を指定するために使用される入力パラメータ、name はクエリの出力に使用される出力パラメータです。 。

ストアド プロシージャの本体では、SELECT ステートメントを使用して Student テーブル内の資格のある学生の名前をクエリし、クエリ結果を変数名に格納し、最後に OUT キーワードを通じてクエリ結果を返します。

このストアド プロシージャの使用方法は次のとおりです:

CALL GetStudent(1,@name);
SELECT @name;

この例では、 use CALL このステートメントはストアド プロシージャ GetStudent を呼び出し、パラメーター ID の値を 1 として渡し、クエリ結果を保存する変数 @name を定義します。最後に、SELECT ステートメントを使用してクエリ結果を出力します。

5. 概要

MySQL ストアド プロシージャは MySQL データベースの重要な機能であり、ユーザーが一般的に使用される SQL ステートメントのセットをカプセル化し、データベース アプリケーションの開発とメンテナンスの効率を向上させるのに役立ちます。 MySQL ストアド プロシージャの作成は非常に簡単で、正しい構文形式と命名規則に従うだけです。

実際のアプリケーションでは、ストアド プロシージャは、ユーザーが複雑なビジネス ロジックを実装し、プログラムのパフォーマンスとセキュリティを向上させ、データの送信と処理時間を短縮するのに役立ちます。ユーザーはストアド プロシージャを柔軟に使用して、自分のニーズや実際の状況に応じてデータベース アプリケーションを開発および保守できます。

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

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