declare @smsnum as varchar(10)
declare @smsnum_1 as varchar(10)
declare @smsnum_2 as varchar(10)declare @smmnum_p as char(28)
declare @smmnum_c as char(28)set @smsnum=Convert(varchar(6),dateadd(mm,0,getdate()),112)
set @smsnum_1 = 'S'+@smsnum + '01' set @smsnum=Convert(varchar(6),dateadd(mm,1,getdate()),112)
set @smsnum_2 = 'S'+@smsnum + '01' select top 1 @smmnum_p=smsnum from sc22.abc.dbo.sms_201001 order by smsnum descif @smmnum_p is null
begin
--首次复制对私短信(本月)
insert into sc2.abc.dbo.sms_201001
([smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli])
select
[smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli]
from SC1.abc.DBO.smmsgoffline where smsnum > @smsnum_1
end
else
begin
insert into sc2.abc.dbo.sms_201001
([smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli])
select [smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli]
from SC1.abc.DBO.smsoffline where smsnum > @smmnum_p
end
我想将上面sql中的 sms_201001 用变量取代后面的日期时间,(sms_201001是表名,建立规则是sms_<年份月份>)由于我需要每月定时运行,因此需要将 后面的部分以变量实现,
(上述两个 sc1 和 sc2 是两台数据库服务器的连接名称,这两项是可用的。)
declare @smsnum_1 as varchar(10)
declare @smsnum_2 as varchar(10)declare @smmnum_p as char(28)
declare @smmnum_c as char(28)set @smsnum=Convert(varchar(6),dateadd(mm,0,getdate()),112)
set @smsnum_1 = 'S'+@smsnum + '01' set @smsnum=Convert(varchar(6),dateadd(mm,1,getdate()),112)
set @smsnum_2 = 'S'+@smsnum + '01' select top 1 @smmnum_p=smsnum from sc22.abc.dbo.sms_201001 order by smsnum descif @smmnum_p is null
begin
--首次复制对私短信(本月)
insert into sc2.abc.dbo.sms_201001
([smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli])
select
[smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli]
from SC1.abc.DBO.smmsgoffline where smsnum > @smsnum_1
end
else
begin
insert into sc2.abc.dbo.sms_201001
([smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli])
select [smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli]
from SC1.abc.DBO.smsoffline where smsnum > @smmnum_p
end
我想将上面sql中的 sms_201001 用变量取代后面的日期时间,(sms_201001是表名,建立规则是sms_<年份月份>)由于我需要每月定时运行,因此需要将 后面的部分以变量实现,
(上述两个 sc1 和 sc2 是两台数据库服务器的连接名称,这两项是可用的。)
declare @tablename varchar(2000)
exec('insert into sc2.abc.dbo.'+@tablename+' ([smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli])
select
[smsnum]
,[smb_num]
,[smsid]
,[smsmobcou]
,[smsmobare]
,[smsmobpho]
,[smsencode]
,[smsbody]
,[smsoper]
,[smsretry]
,[smstxdt]
,[smsstat]
,[smspaybch]
,[smspaycli]
,[smstmp_cusid]
,[smstmp_cusname]
,[smstype]
,[smsrelcli]
...
请问条件那里怎么加呢?主要是变量里面出现的单引号,好象嵌套出问题了我加入如下:Set @condition = 'smm_num >= "S20100101"'。。exec('insert into sc2.abc.dbo.'+@tablename+' ([smsnum]
...+ @condition )出现如下错误:Msg 102, Level 15, State 1, Line 39
Incorrect syntax near '>'.