可以,调用sp_executesql 执行
例子
execute sp_executesql 
          N'select * from pubs.dbo.employee where job_lvl = @level',
          N'@level tinyint',
          @level = 35

解决方案 »

  1.   

    谢谢。不过如果这个变量名我希望是动态生成的该如何处理呢?即,在执行声明时我只知道该变量的类型和位数,但变量名在另一个变量中,比如'declare @' + @VariantName + @type,有方法吗?
      

  2.   

    想到个笨办法!
    declare @test varchar(100)
    select @test = 'execute sp_executesql ' + 'N''select @level'',N''@level tinyint'',@level = null'
    select @test
    exec(@test)
      

  3.   

    当然可以啊!这样就可以了!declare @s varchar(8000)
    set @s='declare @'+@VariantName+''+@type
    exec(@s)
      

  4.   

    declare @test varchar(100)
    select @test='declare @chvTest varchar(30)'
    exec(@test+'
    select '+@chvTest
    ')
      

  5.   

    --示例
    declare @变量名 sysname,@变量类型 sysname,@变量处理语句 varchar(1000)select @变量名='@s',@变量类型='varchar(8000)'
    ,@变量处理语句='set @s=''''
    select @s=@s+name from sysobjects'
    exec('declare '+@变量名+' '+@变量类型+'
    '+@变量处理语句+'
    select '+@变量名)