这是我的解决方案 :)
我需要在 sqlserver 表(列 year_rif 和 month_rif)中获取较旧的日期,以从链接的 oracle 表中插入更新的记录(按月作业在 sqlserver 中镜像 oracle 表)
DECLARE @anno_INIZIO int
DECLARE @mese_INIZIO int
select top(1) @mese_INIZIO= mese_rif,@anno_INIZIO=anno_rif
from dbo.ORACLE_BUDGET_MENSILI
group by mese_rif,anno_rif
order by max(mese_rif/12+anno_rif) desc
set @anno_inizio=coalesce(@anno_INIZIO ,2016)
set @mese_INIZIO=coalesce(@mese_INIZIO,1)
在第一次导入时,我假设从 2016 年 1 月开始获取数据
完整的工作是:
DECLARE @anno_INIZIO int
DECLARE @mese_INIZIO int
--get max year/mont avaible in mirrored table
select top(1) @mese_INIZIO= mese_rif,@anno_INIZIO=anno_rif from dbo.ORACLE_BUDGET_MENSILI group by mese_rif,anno_rif order by max(mese_rif/12+anno_rif) desc
--
set @anno_inizio=coalesce(@anno_inizio,2016)
set @mese_INIZIO=coalesce(@mese_INIZIO,1)
-- query to linked oracle to get into table newer data
SET @SQL='select * FROM OPENQUERY(ADL_REP,''
SELECT CODICE_UO,ANNO_RIF,MESE_RIF,ID_CLASSE,BUDGET,ORE_MENSILI_OBIETTIVO FROM ADL.BUDGET_MENSILI where mese_rif/12+anno_rif > '+convert(varchar(255),@mese_INIZIO/12+@anno_INIZIO)+'
'')'
INSERT INTO uat.[dbo].ORACLE_BUDGET_MENSILI EXECUTE sp_executesql @SQL