declare @s1 Nvarchar(1000)
declare @dt varchar(20)
set @dt=left(CONVERT(varchar(100), GETDATE(), 12),4)
set @s1= 'create proc [Radar'+ @dt+ '].[dbo].[up_name] 
   @BSC varchar(32),
   @BSCType tinyint,
   @MSC varchar(32),
   @Server varchar(50),
   @Re varchar(50)AS
if not exists(select 1 from dbo.[NE]  where BSC = @BSC and MSC = @MSC)
begin
   insert into dbo.[NE] ([BSC],[BSCType],[MSC],[Server],[Re])
   values(@BSC,@BSCType,@MSC,@Server,@Re)
end'
print(@s1)
exec(@s1)

解决方案 »

  1.   

    declare @s1 Nvarchar(1000)
    declare @dt varchar(20)
    set @dt=left(CONVERT(varchar(100), GETDATE(), 12),4)
    set @s1= ' use ' + 'Radar'+ @dt+ ' 
    go
    create proc up_name 
       @BSC varchar(32),
       @BSCType tinyint,
       @MSC varchar(32),
       @Server varchar(50),
       @Re varchar(50)AS
    if not exists(select 1 from dbo.[NE]  where BSC = @BSC and MSC = @MSC)
    begin
       insert into dbo.[NE] ([BSC],[BSCType],[MSC],[Server],[Re])
       values(@BSC,@BSCType,@MSC,@Server,@Re)
    end
    go'
    print(@s1)
    exec(@s1)
      

  2.   

    直接运行create proc [Radar0812].[dbo].[up_name] 
    ...
      

  3.   

    declare @s1 Nvarchar(1000)
    declare @dt varchar(20)
    set @dt=left(CONVERT(varchar(100), GETDATE(), 12),4)
    set @s1= ' use '+ 'Radar'+ @dt + char(10) + '
    exec('' create proc up_name 
       @BSC varchar(32),
       @BSCType tinyint,
       @MSC varchar(32),
       @Server varchar(50),
       @Re varchar(50)AS
    if not exists(select 1 from dbo.[NE]  where BSC = @BSC and MSC = @MSC)
    begin
       insert into dbo.[NE] ([BSC],[BSCType],[MSC],[Server],[Re])
       values(@BSC,@BSCType,@MSC,@Server,@Re)
    end'')'
    print(@s1)
    exec(@s1)
      

  4.   

    'CREATE/ALTER PROCEDURE' 不允许将数据库名称指定为对象名前缀。数据库RadarYYMM 是动态的,每个月自动生成一个RadarYYMM库,如:Radar0812,Radar0901,等等,
     我要做的是每个月的第一天自动往这个库里添加表和存储过程,