ホームページ  >  記事  >  データベース  >  mysqlクエリストアドプロシージャ

mysqlクエリストアドプロシージャ

PHPz
PHPzオリジナル
2023-05-14 09:54:07877ブラウズ

MySQL は、複数のプログラミング言語をサポートするオープンソースのリレーショナル データベース管理システムです。アプリケーションを開発するときは、複雑な SQL クエリ ステートメントを実行する必要があることがよくありますが、このとき、MySQL ストアド プロシージャを使用して作業を完了できます。

ストアド プロシージャは、パラメータを受け入れて結果セットを返すことができる SQL ステートメントのコレクションです。 SQL ステートメントを単独で実行する場合と比較して、ストアド プロシージャの使用には次の利点があります。

  1. アプリケーション コードが簡素化され、プログラムの保守と更新が容易になります。
  2. ストアド プロシージャは、SQL ステートメントを単独で実行するよりも高速に実行されます。
  3. ストアド プロシージャにより、データの一貫性とセキュリティを確保できます。

MySQL ストアド プロシージャの一般的な例をいくつか見てみましょう。

(1) 単純なストアド プロシージャを作成します

CREATE PROCEDURE get_person(IN id INT)
BEGIN

SELECT * FROM person WHERE id = id;

END;

上記のコードは、入力パラメータ id を使用して get_person という名前のストアド プロシージャを作成し、person テーブル内の指定された ID を持つすべてのレコードを返します。情報。パラメーターのタイプは、INOUT、または INOUT で、それぞれ入力、出力、入出力のタイプを表します。

ストアド プロシージャを実行するステートメントは次のとおりです:

CALL get_person(1);

このステートメントは、person# の id# を返します。 ## テーブル ## は 1 のレコードです。 (2) 出力パラメータを使用してストアド プロシージャを作成する

CREATE PROCEDURE

get_status

(IN id INT, OUT status VARCHAR(50))BEGIN

SELECT status FROM order WHERE id = id INTO status;

END;

このストアド プロシージャは入力パラメータ

id

を受け入れ、テーブル内の id に対応する # を order します。 ##status フィールド値は status 変数に返されます。 ストアド プロシージャを実行するステートメントは次のとおりです:

CALL get_status(1, @status);

SELECT @status;

このステートメントは
を出力します。 order

テーブル内の

id を持つレコードの status フィールド値は 1 です。 (3) カーソルを使用したスト​​アド プロシージャの作成

CREATE PROCEDURE

get_persons_by_age

(IN age INT)

BEGIN<pre class='brush:php;toolbar:false;'>DECLARE done BOOLEAN DEFAULT FALSE; DECLARE pid INT; DECLARE pname VARCHAR(50); DECLARE persons CURSOR FOR SELECT id, name FROM person WHERE age = age; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN persons; repeat_row: LOOP FETCH persons INTO pid, pname; IF done THEN LEAVE repeat_row; END IF; SELECT pid, pname; END LOOP; CLOSE persons;</pre>END;

このストアド プロシージャは、入力パラメータ

age

を受け入れ、

person テーブル内のすべてのレコードを返します。ここで、ageage## に等しいです。 # 。 このストアド プロシージャは、カーソルを使用して結果セットを走査し、各レコードの id フィールド値と

name

フィールド値を出力します。 ストアド プロシージャを実行するステートメントは次のとおりです: CALL get_persons_by_age(20);

このステートメントは、

person## 内のすべての

age を返します。 # table

は 20 レコードで、その

idname の値を出力します。 つまり、MySQL ストアド プロシージャを使用すると、複雑なデータベース操作を簡単に完了でき、アプリケーションの効率とセキュリティが向上します。開発者は、実際のニーズに基づいて適切なストアド プロシージャを設計し、最適なパフォーマンスと保守性を実現できます。

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

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