ストアド プロシージャ関数の動的テーブル名
SQL では、関数は不変であり、データを変更できません。したがって、プリペアド ステートメントを関数内で使用することはできず、動的な名前を持つテーブルにアクセスしようとするときに問題が生じます。
この問題を解決するには、ストアド プロシージャを使用できます。ストアド プロシージャは、プリペアド ステートメントと 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>
プロシージャを使用するには、IN パラメータはテーブル名と ID で設定され、OUT パラメータは名前の取得に使用されます。
SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
以上がSQL 関数内で動的に名前が付けられたテーブルにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。