MySQL は、複数のプログラミング言語をサポートするオープンソースのリレーショナル データベース管理システムです。アプリケーションを開発するときは、複雑な SQL クエリ ステートメントを実行する必要があることがよくありますが、このとき、MySQL ストアド プロシージャを使用して作業を完了できます。
ストアド プロシージャは、パラメータを受け入れて結果セットを返すことができる SQL ステートメントのコレクションです。 SQL ステートメントを単独で実行する場合と比較して、ストアド プロシージャの使用には次の利点があります。
MySQL ストアド プロシージャの一般的な例をいくつか見てみましょう。
(1) 単純なストアド プロシージャを作成します
CREATE PROCEDURE get_person
(IN id INT)
BEGIN
SELECT * FROM person WHERE id = id;
END;
上記のコードは、入力パラメータ id
を使用して get_person
という名前のストアド プロシージャを作成し、person
テーブル内の指定された ID を持つすべてのレコードを返します。情報。パラメーターのタイプは、IN
、OUT
、または 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;
このストアド プロシージャは入力パラメータ
id を受け入れ、テーブル内の id
に対応する # を order
します。 ##status フィールド値は
status 変数に返されます。
ストアド プロシージャを実行するステートメントは次のとおりです:
SELECT @status;
このステートメントは
を出力します。 order
id を持つレコードの
status フィールド値は 1 です。
(3) カーソルを使用したストアド プロシージャの作成
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 テーブル内のすべてのレコードを返します。ここで、
age は
age## に等しいです。 # 。 このストアド プロシージャは、カーソルを使用して結果セットを走査し、各レコードの
id
フィールド値と
フィールド値を出力します。 ストアド プロシージャを実行するステートメントは次のとおりです:
CALL get_persons_by_age(20);
このステートメントは、
person## 内のすべてのage を返します。 # table
は 20 レコードで、そのid と
name の値を出力します。
つまり、MySQL ストアド プロシージャを使用すると、複雑なデータベース操作を簡単に完了でき、アプリケーションの効率とセキュリティが向上します。開発者は、実際のニーズに基づいて適切なストアド プロシージャを設計し、最適なパフォーマンスと保守性を実現できます。
以上がmysqlクエリストアドプロシージャの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。