ホームページ >データベース >mysql チュートリアル >ストアド プロシージャ関数で動的に参照されるテーブルをクエリするにはどうすればよいですか?

ストアド プロシージャ関数で動的に参照されるテーブルをクエリするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 09:28:02864ブラウズ

How to Query Dynamically Referenced Tables in Stored Procedure Functions?

ストアド プロシージャ関数でのテーブルの動的参照

ストアド プロシージャ関数を作成する場合、テーブルの名前を動的に指定する必要が生じる場合があります。問い合わせるために。この課題は、動的 SQL の制限のため、関数内の SQL ステートメントの FROM 句で変数を直接使用できないために発生します。

回避策としてのプリペアド ステートメント

回避策の 1 つは、準備されたステートメントを使用することです。ストアド プロシージャでは、準備されたステートメントを使用して動的 SQL クエリを構築できます。ただし、このアプローチは、プリペアド ステートメントの使用が禁止されているため、関数には適していません。

OUT パラメーターを含むストアド プロシージャ

この制限に対処するための代替方法は、次のとおりです。目的の値を返す OUT パラメーターを使用してストアド プロシージャを作成します。このようなストアド プロシージャの例を次に示します。

CREATE PROCEDURE getName
 (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN
  SET @GetName = CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE>

使用例

このストアド プロシージャを使用するには、次のように変数値を指定します。

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;

この手法を使用すると、OUT パラメーターを使用したスト​​アド プロシージャを利用して、ストアド プロシージャ関数内で動的テーブル名を効率的にクエリできるようになります。

以上がストアド プロシージャ関数で動的に参照されるテーブルをクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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