--当前数据库是MASTER,执行以下语句,当前数据库依然是MASTER,declare @dbzt sysname
set @dbzt='db2008' --设置数据库名
exec ('use '+@dbzt) --设置当前数据库,但没有成功,也没有报错,只提示"命令已成功完成"。当前数据库仍为MASTER,是什么原因?是不是EXEC不支持USE语句?
请教?谢谢!
set @dbzt='db2008' --设置数据库名
exec ('use '+@dbzt) --设置当前数据库,但没有成功,也没有报错,只提示"命令已成功完成"。当前数据库仍为MASTER,是什么原因?是不是EXEC不支持USE语句?
请教?谢谢!
把要执行的操作都写到动态SQL中,然后再EXEC这个动态SQL.例如这样:
EXEC ('USE pubs SELECT * FROM authors')
或者你不改变当前数据库,用dbo.数据库名.table来操作也行。
我每执行一条语句都要写上USE PUBS???
这是比较好的办法了.要不然就在是在数据库对象前加上数据库名前缀,例如:
use master
declare @dbzt sysname
set @dbzt='db2008' --设置数据库名
exec('select * from ' + @dbzt + '.. tablename') /*为表加上数据库名称*/
如果要执行多个db2008中的表,每个表都加前缀的话,这样不是更麻烦?