--用exec就行了,如下面的例子:
declare @tbname varchar(250)
set @tbname='要删除的表名'if exists(select 1 from sysobjects where name=@tbname and type='U')
   exec('drop table '+@tbname)

解决方案 »

  1.   

    IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'sp_droptable' 
       AND    type = 'P')
        DROP PROCEDURE sp_droptable
    GOCREATE PROCEDURE sp_droptable 
    @tablename varchar(20)
    AS
    declare @sql varchar(200)
    set @sql='IF EXISTS (SELECT name FROM sysobjects 
             WHERE name = '''+@tablename+''' AND type = ''P'')
    DROP table '+@tablename
    GO
      

  2.   

    刚才忘了重要的一句,修改一下
    IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'sp_droptable' 
       AND    type = 'P')
        DROP PROCEDURE sp_droptable
    GOCREATE PROCEDURE sp_droptable 
    @tablename varchar(20)
    AS
    declare @sql varchar(200)
    set @sql='IF EXISTS (SELECT name FROM sysobjects 
             WHERE name = '''+@tablename+''' AND type = ''P'')
    DROP table '+@tablename
    exec(@sql)
    GO