使用带有变量名的数据库语句

Use Database statement with Variable Name

我正在尝试将数据库名称存储在变量中:

DECLARE @SQLString  varchar(max)
DECLARE @DBIn  varchar(50)

SET @DBIn ='myDB'
SET @SQLString = 'USE ' + @DBIn 

select @SQLString
EXEC(@SQLString)

当我执行这段代码时没有错误,但它实际上不起作用(数据库不会像我只是 运行 a USE [myDB] 那样改变)。

为什么不直接将数据库名称添加到 schema.table 名称中?

DECLARE @SQLString  varchar(max)
DECLARE @DBIn  varchar(50)

SET @DBIn ='myDB'
SET @SQLString = 'SELECT * FROM ' + @DBIn + '.dbo.MyTable' 

select @SQLString
EXEC(@SQLString)

@SQLString 中包含的脚本的数据库名称已更改。 例如,下面的代码将起作用:

DECLARE @SQLString  varchar(max)
DECLARE @DBIn  varchar(50)

SET @DBIn ='myDB'
SET @SQLString = 'USE ' + @DBIn+ ' SELECT TOP 100 * FROM dbo.MyTable'

select @SQLString
EXEC(@SQLString)