如何将数据库名称传递到存储过程?我想是这样如何将数据库名称传递到存储过程?
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