SQL Server:如何将数据库名称用作存储过程中的参数?

时间:2016-04-04 10:33:52

标签: sql sql-server

如何在同一个db中的2个不同domain的表格上进行联接

SET DBname = "sample"
SELECT *
FROM Table1
INNER JOIN DBname.Table2 T On Table1.key = T.Key 

报告如

  

列名T

无效

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:3)

你必须使用动态sql:

@DBname = 'sample';
declare @sql nvarchar(max);

set @sql = '
SELECT *
FROM Table1 INNER JOIN
     @DBname.table2
     On Table1.key = Table2.Key';

set @sql = replace(@sql, '@DBname', @DBname);

exec sp_executesql @sql;

一般数据库 - 特别是SQL Server - 不允许参数表示数据库名称,模式名称,表名称或列名称。