2010-06-18 81 views
6

我正在使用sp_executesql執行帶有動態表名稱的T-SQL語句。然而,這是十分可怕的,看看是這樣的:在SQL Server中,如何爲表創建引用變量?

set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...' 
sp_executesql @sql 

我寧願希望有一個表變量,它是一個表的引用,這樣我就可以,例如做:

UPDATE TableRef SET ... WHERE ... 

因爲當我有很長的T-SQL語句時,由於它在字符串中的格式很難閱讀。

任何建議將有所幫助。

+0

btw,不是'SET sql = ...'但是'SET @sql = ...' – abatishchev 2010-06-18 10:25:19

+0

是的,謝謝修復。當我按下@時,我一直在大聲疾呼。我不知道我可以這樣做。謝謝。 – 2010-06-18 10:27:03

+0

ón:該產品被稱爲「SQL Server」,而不是「MSSQL」。 – 2010-06-22 07:04:30

回答

0

你不能。如果你想在你的SQL中使用動態表名,你必須將它連接到你的字符串中。

如果在查詢中有很多對錶名稱的引用,可以通過別名表來對其進行縮短,對於所有其他實例,可以使用別名來縮短表名。

例如

SET @SQL = 'UPDATE t SET.... FROM ' + @TableName + ' t WHERE ....' 

使用這種動態SQL時要非常小心。確保你防範SQL注入。

相關問題