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中文網其他相關文章!