テーブル名の柔軟な使用: 動的 SQL のヒント
静的 SQL ステートメントでテーブル名として変数を直接使用すると、便利に見えますが、例に示すようにエラーが発生する可能性があります。 このような問題を回避するには、次の方法をお勧めします:
静的クエリ
静的クエリでは、テーブル名と列名は変更しないでください。
動的クエリ
動的クエリを使用すると、クエリ文字列をプログラムで生成できるため、柔軟性が高まります。その方法は次のとおりです:
sp_executesql
を使用して、生成されたクエリを実行します。 例
次のスクリプトは、異なるデータベース内の一致するテーブルのデータを比較します:
静的クエリ:
<code class="language-sql">SELECT * FROM [DB_ONE].[dbo].[ACTY] EXCEPT SELECT * FROM [DB_TWO].[dbo].[ACTY]</code>
動的クエリ:
<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 には慎重な設計とメンテナンスが必要です。 より包括的なガイダンスについては、「動的 SQL の利点と欠点の分析」などの関連ドキュメントを参照してください。
以上がSQL クエリでテーブル名を動的に決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。