我試圖使用SQL Server動態生成的完全限定表名的變量表名2008.例如,這不起作用:從串聯在FROM子句中
select max([id]) from @dbName+N'.[T1]'
這將給出錯誤等:
消息102,級別15,狀態1,線73
鄰近 '+' 不正確的語法。
我知道,像這樣的工作:
declare @qualifiedTable varchar(200) = @dbName+N'.[T1]'
select max([id]) from @qualifiedTable
但我必須這樣做的時候,這地段,所以我真的很想做的線。可能嗎?
不,你的其它方法將不能工作。您需要將腳本構建爲字符串並使用'EXEC(@string)'或'EXEC sp_executesql @ string'來調用它,就像Duane Theriot的回答一樣(確保@string是'nvarchar')。看看[這個問題](http://stackoverflow.com/questions/4136447/selecting-from-a-table-where-the-name-is-passed-as-a-variable「從表中選擇該名稱作爲變量傳遞「)。 – 2012-03-22 09:36:29
這個問題之前已經提過很多次了,但這裏的一個具體問題是,因爲你的查詢不包含模式,所以它無法工作。你需要這個:DatabaseName.SchemaName.ObjectName – Pondlife 2012-03-23 12:16:15