2011-04-16 88 views
1

如何將數據庫名稱傳遞到存儲過程?我想是這樣如何將數據庫名稱傳遞到存儲過程?

create procedure dbo.Test 
    @databaseName varchar(100) 
as 
select * from @databasename.Person.Address 
go 

我想用它像這樣

execute dbo.Test @databaseName = 'AdventureWorks' 
+0

DB_NAME()爲您提供當前數據庫。你不需要爲此寫一個程序。 DB_NAME()完成相同的工作。 – 2011-04-16 18:09:46

回答

4

這是不可能在你所描述的方式。

你可以用dynamic SQL這樣做,但這會帶來一系列問題。

+1

你可以*只用*在數據庫或外部使用動態SQL來完成它。 – Thomas 2011-04-16 18:09:54

1

聽起來就像您試圖將應該是連接字符串的一部分的信息移動到存儲過程邏輯中。如果您期望Person表將位於不同數據庫中,則應在部署中修復此數據庫名稱 - 例如通過參數化創建腳本和sqlcmd。

相關問題