2010-08-20 24 views
1

我需要連續多次更新另一個表中的表。爲了讓這個腳本更容易讓人們使用,我希望能夠動態引用它。像這樣:動態數據庫名稱和架構/所有者分配

declare @databasename sysname 
set @databasename = 'm2mdata01.dbo' 

select * from @databasename.mytable 

這是行不通的。有關我如何完成此任務的任何建議?

回答

1

您不能在SQL語句的FROM子句中使用變量。您將不得不使用動態SQL,例如:

declare @databasename sysname 
set @databasename = 'm2mdata01.dbo' 
EXEC ('select * from ' + @databasename + '.mytable') 
+0

任何其他選項?如果我不得不編輯代碼來做到這一點,那將是一個巨大的混亂。 – DavidStein 2010-08-20 19:00:20

+0

如果數據庫是SQL腳本的唯一動態組件,則可以利用「USE數據庫」命令。但是,您也不能對它使用變量。但是,您可能會在運行語句之前找到設置數據庫的方法。 – bobs 2010-08-20 19:19:36

相關問題