不能用变量代替表名!!!!
只能写到一个字符串里,然后执行这个字符串!!!!

解决方案 »

  1.   

    CREATE PROCEDURE drop_salary_table 
    @filename char(20) =null,
    @filename1 char(20)=null,
    @month_str char(20)=null
    AS
    --
    declare @execStr varchar(255)
    select @execStr=''
    --
    if exists(select name from sysobjects where name=@filename)
    select @execStr=@execStr+'drop table'+@filename
    exec(@execStr)
    --drop table @filename
      

  2.   

    首先,建立或删除数据库非临时对象如表(不含临时表),触发器,存储过程(不含临时存储过程)等必须要自动提交事务
    其次,存储过程,触发器中不能建立或删除非临时对象