如何將數據庫名稱傳遞到存儲過程?我想是這樣如何將數據庫名稱傳遞到存儲過程?
create procedure dbo.Test
@databaseName varchar(100)
as
select * from @databasename.Person.Address
go
我想用它像這樣
execute dbo.Test @databaseName = 'AdventureWorks'
如何將數據庫名稱傳遞到存儲過程?我想是這樣如何將數據庫名稱傳遞到存儲過程?
create procedure dbo.Test
@databaseName varchar(100)
as
select * from @databasename.Person.Address
go
我想用它像這樣
execute dbo.Test @databaseName = 'AdventureWorks'
這是不可能在你所描述的方式。
你可以用dynamic SQL這樣做,但這會帶來一系列問題。
你可以*只用*在數據庫或外部使用動態SQL來完成它。 – Thomas 2011-04-16 18:09:54
聽起來就像您試圖將應該是連接字符串的一部分的信息移動到存儲過程邏輯中。如果您期望Person表將位於不同數據庫中,則應在部署中修復此數據庫名稱 - 例如通過參數化創建腳本和sqlcmd。
是的,你必須做一些動態的SQL。雖然本文沒有明確地進入動態SQL創建,但它應該足以讓您開始:http://www.relationalis.com/articles/2011/4/17/dealing-with-quotes-in-sql.html
DB_NAME()爲您提供當前數據庫。你不需要爲此寫一個程序。 DB_NAME()完成相同的工作。 – 2011-04-16 18:09:46