我在同一台服务器(实例)上有两个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中创建变量,它将引用同一服务器中的数据库,如果可能的话。
答案 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