MySQL ストアド プロシージャは、必要に応じて呼び出して実行できる事前定義された SQL ステートメントのセットです。ストアド プロシージャを使用すると、コードを再利用できるようになり、データベースのパフォーマンスが向上すると同時に、開発のセキュリティも向上します。
MySQL では、ストアド プロシージャは結果セットを返すことができます。多くの場合、ストアド プロシージャを使用して結果セットを返すと、コードがより簡潔かつ明確になり、クエリのパフォーマンスも向上します。この記事では、MySQL ストアド プロシージャで結果セットを返す方法を紹介します。
結果セットを含むストアド プロシージャを作成する
ストアド プロシージャを使用して結果セットを返す前に、結果セットを含むストアド プロシージャの作成方法を理解する必要があります。結果セットを含む単純なストアド プロシージャを作成する例を次に示します。
CREATE PROCEDURE get_all_users() BEGIN SELECT * FROM users; END
上の例では、get_all_users()
という名前のストアド プロシージャを作成しました。 get_all_users()
ストアド プロシージャが呼び出されると、users
データ テーブル内のすべてのデータ行が返されます。
ストアド プロシージャで結果セットを返す前に、最初に結果セットを定義する必要があることに注意してください。MySQL で結果セットを定義するには 2 つの方法があります。パラメータを出力し、結果セットを返す
2 つの方法を以下に紹介します。 OUT
およびINOUT## を使用できます。 # 個の修飾子。 OUT
修飾子を使用して定義されたパラメーターは、ストアド プロシージャの実行時に、パラメーターに入力パラメーターよりも 1 つ多くの関数があることを示します。さらに、ストアド プロシージャの結果セットを格納するために使用されます。 次の例では、
OUT
修飾子を使用して、
という名前のパラメータを定義します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">CREATE PROCEDURE get_all_users_2(OUT results VARCHAR(255))
BEGIN
SELECT * FROM users;
INTO results;
END</pre><div class="contentsignin">ログイン後にコピー</div></div>
上の例では、 SELECT INTO
ステートメントを使用して、クエリ結果を
パラメータに保存します。 呼び出しは次のとおりです:
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">CALL get_all_users_2(@results);
SELECT @results;</pre><div class="contentsignin">ログイン後にコピー</div></div>
上の例では、まずストアド プロシージャ
を呼び出し、結果を
@results# に保存します。変数内の ##。次に、SELECT ステートメントの
@results 変数にアクセスして、ストアド プロシージャから返される結果セットを取得します。
方法 2:
SELECT ステートメントを使用して結果セットを返す
SELECT ステートメントを使用することです。結果セットを返す ステートメント。このアプローチは、複数の結果セットを返す必要がある場合に特に便利です。
SELECT ステートメントを使用してストアド プロシージャを定義します。
CREATE PROCEDURE get_all_users_3() BEGIN SELECT * FROM users WHERE age > 18; SELECT * FROM users WHERE age <= 18; END
SELECT ステートメントを使用します。
users
このストアド プロシージャを呼び出した後、
mysql_store_result() 関数と
mysql_fetch_row()
mysql_query("CALL get_all_users_3()"); MYSQL_RES *res = mysql_store_result(&mysql); MYSQL_ROW row; while ((row = mysql_fetch_row(res))) { printf("%s %d\n", row[1], stoi(row[2])); } mysql_next_result(&mysql); res = mysql_store_result(&mysql); while ((row = mysql_fetch_row(res))) { printf("%s %d\n", row[1], stoi(row[2])); }
上記のコードは、
mysql_query() 関数のストアド プロシージャを呼び出して結果セットを取得する方法と、
mysql_store_result() 関数の使用方法を示しています。および mysql_fetch_row() 結果セット データを取得して処理する関数。
結論
MySQL では、ストアド プロシージャは結果セットを返すことができます。出力パラメーターを定義してストアド プロシージャの結果セットを保存することも、
SELECT
以上がMySQLストアドプロシージャで結果セットを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。