T-SQL可以在select语句中使用变量来指定数据库

时间:2010-02-12 10:00:21

标签: sql-server tsql

有没有办法在不将sql转换为字符串并调用exec

的情况下执行此类操作
DECLARE @source_database varvhar(200)
SELECT @source_database = 'wibble'

SELECT * FROM SELECT @source_database.dbo.mytable

3 个答案:

答案 0 :(得分:3)

没有。我不敢。

必须使用动态sql才能将变量用于数据库或列名。

答案 1 :(得分:2)

仅适用于未使用链接服务器或动态SQL的存储过程

DECLARE @myProc  varchar(200)
SELECT @myProc  = 'wibble.dbo.foobar'

EXEC @myProc

答案 2 :(得分:0)

还有另一种(不一定非常漂亮)的选择:

IF (@source_database = 'wibble')
    USE wibble;
ELSE IF (@source_database = 'wibble2')
    USE wibble2;
ELSE
    RAISERROR(....)

SELECT * FROM dbo.myTable

如果您有任何实际数量的数据库,这可能会很烦人。但它仍然是一种选择。