ホームページ >データベース >mysql チュートリアル >SQL クエリで動的テーブル名を使用するにはどうすればよいですか?

SQL クエリで動的テーブル名を使用するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-23 06:41:09586ブラウズ

How Can I Use Dynamic Table Names in SQL Queries?

SQL の動的テーブル名

変数 (@tablename など) を使用してテーブル名を動的に設定しようとすると、テーブル変数を宣言する必要があるというエラーが発生する場合があります。これは、静的クエリ (テーブル名と列名を含む) は静的でなければならないためです。

この問題を解決するには、動的 SQL テクノロジーの使用を検討してください。これには、完全な SQL ステートメントを動的に生成し、sp_executesql を使用してそれを実行することが含まれます。例:

<code class="language-sql">declare @schema sysname;
declare @table sysname;
declare @query nvarchar(max);

set @schema = 'dbo';
set @table = 'ACTY';

set @query = '
SELECT * FROM [DB_ONE].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table) + '
EXCEPT
SELECT * FROM [DB_TWO].' + QUOTENAME(@schema) + '.' + QUOTENAME(@table);

EXEC sp_executesql @query;</code>

この例では、テーブル名が動的プレースホルダーに置き換えられ、完全な SQL ステートメントが生成されます。次に、sp_executesql はこの動的クエリを実行し、実行時にテーブル名を解決します。

動的 SQL を使用すると柔軟性が得られますが、細部への注意と適切なメンテナンス手段が必要です。包括的なガイドについては、「動的 SQL の長所と短所」を参照してください。

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

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