储存过程例子一

本文介绍了一段用于证券数据同步的SQL脚本,通过该脚本可以实现从一个数据库到另一个数据库的数据同步过程。主要步骤包括:查找最新的数据记录、删除不再存在的旧数据记录并插入新的证券数据记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--1)找到表中最大的ob_seq_id比如(100000)得到对应的objectId(500000), 在cpdb.对应的比ob_seq_id大的则是新改变的,需要处理,一种是旧的数据,一种是新的数据
--旧的数据是ob_seq_id > 100000 and objectid <=500000 的是旧数据 ob_seq_id>100000 and objectid >500000 的是新数据
--处理方法,删除旧数据,统一将ob_seq_id>100000的插入。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[Syn_Com_Data_BySEQ]
AS

BEGIN
declare @SeqID decimal
declare @ObjectID decimal

    select @SeqID = max(ob_seq_id) from [Com_Securities_Info]  
    select @ObjectID = ObjectID from [Com_Securities_Info] where ob_seq_id = @SeqID
    delete from [Com_Securities_Info]  
        where not exists (select 1 from linkcpdb.cpdb.dbo.tb_public_0007 b
             where Com_Securities_Info.ob_seq_id = b.ob_seq_id)
  and exists (select 1 from linkcpdb.cpdb.dbo.tb_public_0007 c
           where Com_Securities_Info.objectid = c.ob_object_id)
insert into [Com_Securities_Info]
  SElect ob_secid_0007     SecID,      --证券主体ID
   ob_seccode_0007     StockCode,     --证券代码
   ob_secname_0007     ShortName,     --证券简称
   f001v_0007      ChiSpelling,    --拼音简称
   f016v_0007      StockName,     --证券全称
   f002v_0007      StockTypeCode,    --证券类别编码
   f003v_0007      StockType,     --证券类别
   f005v_0007      MarketCode,     --交易市场编码
   f006v_0007      Market,      --交易市场
   f007d_0007      MarketDate,     --上市日期
   f008d_0007      EndDate,     --终止上市日期
   f009n_0007      InitMarketNum,    --初始上市数量
   f012v_0007      CodePropertyCode,   --代码属性编码
   f013v_0007      CodeProperty,    --代码属性
   f014v_0007      OrgID,      --发行机构ID
   f015v_0007      OrgName,     --发行机构名称
   f017v_0007      MarketStatusCode,   --上市状态编码
   f018v_0007      MarketStatus,    --上市状态
   ob_modtime_0007     ModTime,     --修改时间
   ob_rectime_0007     RecTime,     --录入时间
   ob_isValid_0007     IsValid,     --是否有效
   ob_object_id     ObjectID,     --对象ID
   ob_seq_id        
from linkcpdb.cpdb.dbo.tb_public_0007
where ob_seq_id >@SeqID


exec [SP_Create_Job]  
   @jobname='Syn_com_data',                    --作业名称  
   @sql='exec dbo.Syn_Com_Data_BySEQ',                   --要执行的命令  
   @serverName ='',                      --job   server名  
   @dbname ='',                      --默认为当前的数据库名  
   @freqtype='day',                --时间周期,month   月,week   周,day   日  
   @fsinterval=30,                           --相对于每日的重复次数(默认1则每天执行一次,否则每天执行多次)
   @freqUnit ='mm',     --时间单位,小时hour 分minute
   @time = 000000
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值