2011-04-16 83 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。

相关问题