declare @s varchar(8000)
set @s='
create procedure protestb
as
select * from test.dbo.databletest'
use ReportServer
exec(@s)

解决方案 »

  1.   

    use master
    gocreate procedure sp_test
    as
    begin
        exec('use test           exec(''create procedure sp_test1 
              as
                  select * from sysobjects'')          ')
    end
    goexec sp_test
    godrop procedure sp_test
    gouse test
    goexec sp_test1
    godrop procedure sp_test1
    go
      

  2.   

    如上例所示,用两个动态SQL嵌套可以实现,也就是说在一个动态SQL内部再执行一个EXEC()。
      

  3.   

    是有点傻掉了,只想着在create里写东西忘了在外面use了,这几天搞移植搞的头脑秀逗了……