declare @tablename varchar
set @tablename = 'student'
--  select * from @tablename    --  此句会出错
exec('select * from ' + @tablename)  -- 动态sql

解决方案 »

  1.   

    . 执行简单的 SELECT 语句
    下面的示例创建并执行一个简单的 SELECT 语句,其中包含名为 @level 的嵌入参数。execute sp_executesql 
              N'select * from pubs.dbo.employee where job_lvl = @level',
              N'@level tinyint',
              @level = 35
      

  2.   

    执行简单的 SELECT 语句
    下面的示例创建并执行一个简单的 SELECT 语句,其中包含名为 @level 的嵌入参数。execute sp_executesql 
              N'select * from pubs.dbo.employee where job_lvl = @level',
              N'@level tinyint',
              @level = 35
      

  3.   

    楼上两位说的都对。总之一个原则就是,用字符串拼出你的SQL语句。其中需要“动态”的部分用变量代替。然后在程序中执行这个语句就可以了。