SQL Server:如何在存储过程中使用数据库名称作为参数?

Rob*_*ior 1 sql sql-server

我怎样才能做一个连接2个不同的表db在同一domain

SET DBname = "sample"
SELECT *
FROM Table1
INNER JOIN DBname.Table2 T On Table1.key = T.Key 
Run Code Online (Sandbox Code Playgroud)

它的报告就像

无效的列名 T

任何帮助,将不胜感激

Gor*_*off 5

您必须使用动态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;
Run Code Online (Sandbox Code Playgroud)

一般的数据库——尤其是 SQL Server——不允许使用参数来表示数据库名称、架构名称、表名称或列名称。