exec('select * into '+@myue+' from data where  month(rs)<month(getdate())')
exec('alter table '+@myue+' add constraint sp_bh3 primary key (bh)')

解决方案 »

  1.   

    create procedure getyue_data as 
    declare @myue varchar(20)
    DECLARE @SQL varchar(8000)
    set @myue='data'+substring(cast(getdate() as varchar(10)),7,10)+substring(cast(getdate() as varchar(10)),1,2)
    if exists(select * from dp_data where month(dprs)<>month(getdate())) 
    begin
    SET @SQL='select * into '+@myue+' from data where  month(rs)<month(getdate()) '
    EXEC(@SQL)SET @SQL='alter table '+@myue+' add constraint sp_bh3 primary key (bh)'
    EXEC(@SQL)delete from data where month(rs)<month(getdate()) 
    end
    go
      

  2.   

    如果表名是变量,使用动态SQL语句拼装字符串,然后交给execute()执行。
      

  3.   

    晕,又来晚了,
    变量不能直接做表名
    但是用exec()可以执行一个字符串的语句