USE XXX 中的变量使用问题
declare @dbname varchar(50)
set @dbname= 'tjbus '
USE @dbname
select @dbname
go
如上脚本中,select @dbname 可以被正确解释,但 USE @dbname ,却不能解释,如何解决在 USE XXX 中的变量使用问题?
------解决方案--------------------注意:
EXEC( 'USE ' + @dbname)这样打开的数据库只在EXEC期间有效,也就是说EXEC中打开的数据库在EXEC结束之后就被自动关闭了,丝毫不影响当前打开的数据库.例如:
USE MASTER
declare @dbname varchar(50)
set @dbname= 'tjbus '
EXEC( 'USE ' + @dbname)
GO
EXEC之后当前的数据库仍旧是MASTER而不是tjbus.所以,使用变量方式打开数据库时,必须把对该数据库的操作一起放到EXEC中执行,例如:
declare @dbname varchar(50)
set @dbname= 'tjbus '
EXEC( 'USE ' + @dbname + ' select * from syscolumns ')
------解决方案--------------------学习