declare @test varchar(20);
set @test = 'test'
exec('use '+@test+'')
go我这样写完后执行,使用的数据库还是master,为什么都告诉我命令成功完成,却没有改变正在使用的数据库 呢

解决方案 »

  1.   

    declare @test varchar(20); 
    set @test = 'test' 
    exec('use '+@test+'') 
    go 我这样写完后执行,使用的数据库还是master,为什么都告诉我命令成功完成,却没有改变正在使用的数据库 呢你所执行的 exec('use '+@test+'')  中的语句里面的数据库已经更改使用的数据库 但是EXEC 外面和里面不是一样的! 就像全局变量和局部变量一样! 好比你调用一个函数一样 函数里面的变量 在函数外面就不起作用一样的道理
     
      

  2.   

    use了,执行代码…………………………
    然后又返回你现有的了