Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2545665
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: Oracle

2015-03-06 19:35:10

    工作原因,需要抽取数据,给对端系统送。因源数据量比较大,如果直接截取一天的数据量,程序执行慢。其实最容易让我们想看的是,通过循环,一次截取几分钟的数据,这样执行执行的效率会大大提升。
     因此,需oracle存储过程,存储过程中,部分代码如下:

点击(此处)折叠或打开

  1. v_startdate := '2015-03-04 08:00:00'; --测试用
  2.   loop
  3.     --获取时间戳,5分钟后的时间戳,将同步的数据,分成小块进行同步
  4.     v_date_t := to_char(to_date(v_startdate, 'yyyy-MM-dd hh24:mi:ss') + 5/(24*60), 'yyyy-MM-dd hh24:mi:ss');
  5.     exit when to_date(v_date_t, 'yyyy-MM-dd hh24:mi:ss') > sysdate;
  6.       --根据台账历史表找出订购sp的工单数据
  7.       v_sql := '
  8.       insert into ti_jy_trade_t
  9.         select tb1.trade_id, tb1.trade_type_code, tb1.in_mode_code,
  10.           tb1.product_id, tb1.brand_code, tb1.user_id, tb1.cust_id,
  11.           tb1.net_type_code, tb1.serial_number, tb1.cust_name,
  12.           tb1.accept_date, tb1.finish_date,tb1.eparchy_code,
  13.           tb1.city_code,tb1.cancel_tag,tb1.remark
  14.         from ' || user_name || '.mytable' || v_dblink || ' tb1
  15.         where tb1.net_type_code in (''' || '10' || ''', ''' || '16' ||
  16.            ''', ''' || '17' || ''', ''' || '33' || ''')
  17.         and tb1.cancel_tag = '''||'0'||'''
  18.         and tb1.subscribe_state = '''||'9'||'''
  19.         and tb1.next_deal_tag = '''||'0'||'''
  20.         and tb1.finish_date >= to_date(''' || v_startdate ||
  21.                ''',''' || 'yyyy-MM-dd hh24:mi:ss' ||
  22.                ''') and tb1.finish_date < to_date(''' || v_date_t ||
  23.                ''',''' || 'yyyy-MM-dd hh24:mi:ss' || ''')
  24.         and exists
  25.         (select 1 from '||user_name||'.tf_b_trade_sp'||v_dblink||' tb2
  26.          where tb1.trade_id = tb2.trade_id
  27.          and tb2.sp_product_id = '''||v_sp_product_id||''')';
  28.       --dbms_output.put_line('start_date= '||v_startdate||', end_date='||v_date_t);
  29.       execute immediate v_sql;
  30.       commit;
  31.       v_startdate := v_date_t;
  32.   end loop;
   雕虫小计.
阅读(4121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~