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

WBOY
リリース: 2023-05-12 10:55:37
オリジナル
2110 人が閲覧しました

MySQL ストアド プロシージャは、一連の SQL ステートメントをデータベースに保存する方法であり、必要に応じて呼び出してこれらのステートメントを実行できます。 MySQL ストアド プロシージャを作成するには、SQL 構文に関する基本的な知識とプログラミングの概念が必要です。

この記事では、MySQL ストアド プロシージャを作成する方法を学び、例を使用してその基本的な構文と作成プロセスを説明します。

  1. ストアド プロシージャの基本構文

MySQL ストアド プロシージャで使用される基本構文は次のとおりです。

CREATE PROCEDURE procedure_name()
BEGIN
-- SQL statements
END;
ログイン後にコピー
ログイン後にコピー

その中で、CREATE PROCEDURE がキーワードですMySQL ストアド プロシージャの場合、procedure_name はストアド プロシージャの名前です。 BEGIN と END の間のコード ブロックは、ストアド プロシージャによって実行される SQL コードです。

次は、学生情報のクエリに使用される単純なストアド プロシージャの例です。

CREATE PROCEDURE GetStudent()
BEGIN
SELECT * FROM Student;
END;
ログイン後にコピー

このストアド プロシージャは GetStudent と呼ばれ、その機能は、ファイル内のすべてのデータを返すことです。学生データテーブル。

  1. ストアド プロシージャのパラメータ

MySQL ストアド プロシージャは、入力パラメータと出力パラメータを受け入れることができます。入力パラメータはストアド プロシージャにデータを渡すために使用され、出力パラメータはストアド プロシージャからデータを返すために使用されます。このうち、入力パラメーターと出力パラメーターの両方は、ストアド プロシージャの作成時に指定する必要があります。

次は、入力パラメーターを含むストアド プロシージャの例です。

CREATE PROCEDURE GetStudentByGrade(IN grade INT)
BEGIN
SELECT * FROM Student WHERE Grade = grade;
END;
ログイン後にコピー

このストアド プロシージャは GetStudentByGrade という名前で、INT 型の入力パラメーター Grade を持っています。このストアド プロシージャが呼び出されると、成績が Grade と等しいすべての学生レコードが返されます。

  1. ストアド プロシージャの変数

MySQL ストアド プロシージャは、変数を使用してデータを保存することもできます。これらの変数は、ストアド プロシージャのコード ブロック内で宣言して使用できます。

次は、変数を使用したスト​​アド プロシージャの例です。

CREATE PROCEDURE GetStudentByClassName(IN class_name VARCHAR(50), OUT student_count INT)
BEGIN
DECLARE class_id INT;
SELECT ClassID INTO class_id FROM Class WHERE ClassName = class_name;
SELECT COUNT(*) INTO student_count FROM Student WHERE ClassID = class_id;
END;
ログイン後にコピー

このストアド プロシージャは GetStudentByClassName という名前で、入力パラメータ class_name と出力パラメータ Student_count の 2 つのパラメータがあります。まず変数 class_id を宣言し、次にクエリを通じて変数の値を取得します。最後に、クエリを通じてクラスに関連付けられた学生の数を計算し、student_count 変数に格納します。

  1. ストアド プロシージャの制御ステートメント

MySQL ストアド プロシージャは、制御ステートメントを使用してコード ブロックの実行を制御できます。一般的な MySQL ストアド プロシージャ制御ステートメントには、IF、CASE、WHILE、および FOR が含まれます。

次に、IF 制御ステートメントを使用したスト​​アド プロシージャの例を示します。

CREATE PROCEDURE GetStudentByID(IN student_id INT)
BEGIN
DECLARE student_name VARCHAR(50);
IF student_id <= 0 THEN
SET student_name = 'Invalid ID';
ELSE
SELECT StudentName INTO student_name FROM Student WHERE StudentID = student_id;
END IF;
SELECT student_name;
END;
ログイン後にコピー

このストアド プロシージャは GetStudentByID という名前で、入力パラメータ Student_id を持っています。まず変数 Student_name を宣言し、次に IF 制御ステートメントを使用して、入力された学生 ID が有効かどうかを確認します。無効な場合は「無効な ID」が返され、有効な場合はデータベースにクエリが実行され、見つかった学生の名前が Student_name 変数に保存されます。

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

MySQL を使用してストアド プロシージャを作成するには、MySQL コマンド ラインまたは MySQL Workbench を使用します。

MySQL コマンド ラインで、次のコマンドを使用してストアド プロシージャを作成できます:

CREATE PROCEDURE procedure_name()
BEGIN
-- SQL statements
END;
ログイン後にコピー
ログイン後にコピー

次に、次のコマンドを使用してストアド プロシージャを呼び出すことができます:

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

MySQL Workbench で、次の手順を使用してストアド プロシージャを作成できます。

  1. 左ペインで、ストアド プロシージャを作成するデータベースを選択します。
  2. [ストアド プロシージャ] タブをクリックします。
  3. [ストアド プロシージャ] リストの [新しいストアド プロシージャ] をクリックします。
  4. ストアド プロシージャの SQL コードを「CREATE PROCEDURE」ステートメント ボックスに書き込みます。
  5. [適用] ボタンをクリックしてストアド プロシージャを作成します。

ストアド プロシージャを作成した後、次のコマンドを使用して、MySQL コマンド ラインでストアド プロシージャを呼び出すことができます。

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

MySQL Workbench では、次の手順を使用して、ストアド プロシージャを呼び出します:

  1. 左ペインでストアド プロシージャを呼び出すデータベースを選択します。
  2. [ストアド プロシージャ] タブをクリックします。
  3. [ストアド プロシージャ] リストで、呼び出すストアド プロシージャを見つけます。
  4. ストアド プロシージャのパラメータ (存在する場合) を [CALL] ステートメント ボックスに入力します。
  5. 「CALL」ボタンをクリックしてストアド プロシージャを呼び出します。
  6. 結論

MySQL ストアド プロシージャは、SQL コードをデータベースに保存する方法です。ストアド プロシージャを使用すると、複雑な SQL クエリや一般的に使用される SQL コードのブロックをデータベースに保存して、後で再利用したり、クエリの効率を向上したりできます。この記事では、MySQL ストアド プロシージャの基本構文、パラメータ、変数、制御ステートメントの使用方法、ストアド プロシージャの作成方法と呼び出し方法を紹介します。この記事が、MySQL ストアド プロシージャを理解し、実際の作業で使用してデータベース操作の効率を向上させるのに役立つことを願っています。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!