ホームページ  >  記事  >  データベース  >  mysqlストアドプロシージャステートメント

mysqlストアドプロシージャステートメント

PHPz
PHPzオリジナル
2023-05-20 12:12:08742ブラウズ

MySQL ストアド プロシージャは、一連の SQL ステートメントを実行して特定の機能を完了できる再利用可能なデータベース プログラムです。一部の複雑な SQL ステートメントやアプリケーション内の SQL ステートメントと比較して、ストアド プロシージャの利点は、プログラムの操作効率とセキュリティを大幅に向上できることです。

構文

MySQL ストアド プロシージャは、「CREATE PROCEDURE」ステートメントを使用して定義されます。簡単な例を次に示します:

CREATE PROCEDURE procedure_name ([IN/OUT] parameter_name data_type)
BEGIN 
    SQL statement; 
    SQL statement;
    ...
END
  • procedure_name: ストアド プロシージャの名前。
  • parameter_name: ストアド プロシージャの入力パラメータと出力パラメータの名前。data_type はデータ型を指します。
  • SQL ステートメント: 実行される SQL ステートメントのセグメントには、制御構造を含めることができます。

ストアド プロシージャ ステートメントは「BEGIN」で始まり「END」で終わり、途中に SQL ステートメントとプログラム制御構造があります。パラメータには、入力、出力、または入出力モードを指定できます。

従業員の位置情報を出力するストアド プロシージャの例を次に示します。

CREATE PROCEDURE employee_role(IN emp_id INT)
BEGIN
    SELECT employee_name, department_name, role_name 
    FROM employee, department, role
    WHERE employee.department_id = department.department_id
    AND employee.role_id = role.role_id
    AND employee_id = emp_id;
END

このストアド プロシージャでは、入力パラメータは emp_id で、型は INT です。 。プログラムは必要なデータを照会し、従業員の名前、部門名、役職を出力します。

ストアド プロシージャの呼び出し

ストアド プロシージャを定義した後、CALL ステートメントを使用して呼び出すことができます。簡単な例を次に示します:

CALL procedure_name (parameter1, parameter2, ...);

例:

CALL employee_role(1001);

この呼び出しは、従業員 1001 の名前、部門名、および役職を出力します。

入力、出力、入力および出力パラメータ

パラメータ "IN"、"OUT"、および "INOUT" キーワードを追加することで、入力、出力、および入力および出力パラメータを定義できます。

IN パラメータは、ストアド プロシージャの入力パラメータ、つまりプログラムの実行時に渡されるパラメータ値を参照します。次の構文を使用します:

CREATE PROCEDURE procedure_name(IN parameter1 data_type)

OUT パラメータは、ストアド プロシージャの出力パラメータ。ストアド プロシージャの最後に指定された値が返されます。構文は次のとおりです:

CREATE PROCEDURE procedure_name(OUT parameter1 data_type)

INOUT パラメータは、入力と出力の両方で変更できるパラメータを指します。次の構文が使用されます。

CREATE PROCEDURE procedure_name(INOUT parameter1 data_type)

ループ構造

MySQL ストアド プロシージャは、WHILE、REPEAT/UNTIL、LOOP、FOR などのさまざまなループ構造をサポートします。その中で、WHILE 構造と REPEAT/UNTIL 構造が最もよく使用されます。

WHILE 構造:

WHILE condition DO
   statement(s);
END WHILE;

REPEAT/UNTIL 構造:

REPEAT
   statement(s);
UNTIL condition;

ループ ステートメントの「条件」は論理式です。条件が true である限り、ループは継続します。実装します。

条件ステートメント

MySQL ストアド プロシージャは、IF、IF-ELSE、CASE WHEN ステートメントなどの条件ステートメントもサポートしています。単純な IF ステートメントの例を次に示します。

IF salary > 10000 THEN
   SET bonus = 500;
ELSE
   SET bonus = 200;
END IF;

この IF ステートメントは、ボーナス変数を 500 または 200 に設定します。

概要

MySQL ストアド プロシージャは、一連の SQL ステートメントを実行し、特定の関数を完了するために使用される再利用可能なデータベース プログラムです。ストアド プロシージャは、プログラムの実行効率と安全性を向上させることができます。その構文には、定義、呼び出し、入出力パラメータ、ループ構造、条件文などが含まれます。 MySQL ストアド プロシージャを学習すると、プログラミング効率を向上させ、より強力な SQL クエリ ステートメントを作成するのに非常に役立ちます。

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

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