在SSMS中替换名称DB的变量

时间:2015-12-14 08:12:22

标签: sql sql-server database

我在同一台服务器(实例)上有两个DB(DB1和DB2),我知道我可以写这样的查询:

select d1.name, d2.email
from [db1].[dbo].[person] as d1
join [db2].[dbo].[details_person] as d2
on d1.id = d2.id_p

但我的问题是:我可以创建类似变量的东西,当我的数据库更改名称时,它允许在我的查询中替换[db2]。

我的意思是类似这样的代码: [$(var_db2)].[dbo].[details_person]但我不知道我是否可以在SSMS中创建变量,它将引用同一服务器中的数据库,如果可能的话。

1 个答案:

答案 0 :(得分:0)

使用Dynamic Sql动态设置DB。试试这样的事情

declare @char varchar(10) = 'db_name'

exec 
(
'use '+Quotename(@char) + '
select d1.name, d2.email
from [dbo].[person] as d1
join [dbo].[details_person] as d2
on d1.id = d2.id_p'
)

DECLARE @sql NVARCHAR(max)
DECLARE @char VARCHAR(10) = 'db_rd'

SET @sql = 'select d1.name, d2.email
from ' + Quotename(@char) + '.[dbo].[person] as d1
join '+ Quotename(@char) + '.[dbo].[details_person] as d2
on d1.id = d2.id_p'

EXEC Sp_executesql @sql