Sql 如何将数据库名称传递到存储过程中?

Sql 如何将数据库名称传递到存储过程中?,sql,sql-server,tsql,sql-server-2008,stored-procedures,Sql,Sql Server,Tsql,Sql Server 2008,Stored Procedures,如何将数据库名称传递到存储过程中?我试过类似的东西 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'

以您描述的方式,这是不可能的


您可以使用,但这会带来一系列问题。

以您描述的方式,这是不可能的


您可以使用来执行此操作,但这会带来一系列问题。

听起来好像您正在尝试将应该是连接字符串的一部分的信息移动到存储过程逻辑中。如果您希望Person表位于不同的数据库中,则此数据库名称应在部署中固定—例如,通过参数化的创建脚本和sqlcmd。

听起来您正试图将连接字符串中的信息移动到存储过程逻辑中。如果您希望Person表位于不同的数据库中,则此数据库名称应在部署时固定—例如,通过参数化创建脚本和sqlcmd。

DB_name()提供当前数据库。您不需要为此编写过程。DB_NAME()执行相同的任务。DB_NAME()提供当前数据库。您不需要为此编写过程。DB_NAME()执行相同的任务。您只能使用在DB中或外部组装的动态SQL执行此操作。您只能使用在DB中或外部组装的动态SQL执行此操作。