使用带有变量名称的Database语句

时间:2015-02-04 17:31:02

标签: sql sql-server sql-server-2008 tsql

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

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

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

select @SQLString
EXEC(@SQLString)

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

2 个答案:

答案 0 :(得分:2)

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

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

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

select @SQLString
EXEC(@SQLString)

答案 1 :(得分:0)

为@SQLString中包含的脚本更改了DB名称。 例如,下面的代码将起作用:

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)