ホームページ >データベース >mysql チュートリアル >動的クエリの結果を MySQL ストアド プロシージャの OUT パラメータに割り当てる方法

動的クエリの結果を MySQL ストアド プロシージャの OUT パラメータに割り当てる方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 06:41:10998ブラウズ

How to Assign the Result of a Dynamic Query to an OUT Parameter in a MySQL Stored Procedure?

MySQL ストアド プロシージャでの動的クエリ実行と出力割り当て

MySQL では、ストアド プロシージャ内でクエリを動的に生成して実行できます。 。ただし、動的クエリの結果を OUT パラメータに割り当てるには、少し異なるアプローチが必要です。

質問に示されているストアド プロシージャ コードを考えてみましょう。

CREATE PROCEDURE 'searchInvoice'
(
  OUT numOfRecords INT
)
BEGIN
  DECLARE query1 TEXT; 
  DECLARE query2 TEXT; 

 SET query1 = 'SELECT COUNT(*) bla bla bla.....'; 
 // Query1 to select the count of matching tuples..

 SET query2 = 'SELECT * from bla bla bla....';
 // Query2 to select original records...

 // later part of this both queries generate dynamically according to some IN parameters..

 // now I wanna assign the output of the query1 into numOfRecords 
 // and I wanna execute the query2 as well.. like this

    SET @Sql = query2;        
    PREPARE STMT FROM @Sql; 
    EXECUTE STMT; 
    DEALLOCATE PREPARE STMT;

 // output of the query2 can be read in PHP

END

query1 の出力を numOfRecords OUT パラメーターに追加するには、次の手順を実行できます:

  1. ユーザー定義変数の作成結果を保存するには:
SET @numOfRecords = 0;
  1. カーソルを使用して動的クエリを準備して実行します:
DECLARE query1Cursor CURSOR FOR query1;
OPEN query1Cursor;
FETCH query1Cursor INTO @numOfRecords;
CLOSE query1Cursor;
  1. 次のように OUT パラメータを更新します。割り当てられた値:
SET numOfRecords = @numOfRecords;

この変更されたアプローチでは、保存されたプロシージャは、動的クエリを実行することも、特定のクエリの出力を OUT パラメータに割り当てることもできます。

以上が動的クエリの結果を MySQL ストアド プロシージャの OUT パラメータに割り当てる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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