使用带有变量名的数据库语句
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)
我正在尝试将数据库名称存储在变量中:
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)