`
guzizai2007
  • 浏览: 358795 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle存储过程(定时更新短信状态报告)

 
阅读更多

1、定时更新异网短信状态报告,后台程序接收状态报告errorcode和标示client_id存入yw_detail表中

2、log_yw_mobile、yw_detail、和sms_mt_send_detail+日期,三表关联更新数据

3、存储过程:

--------  异网短信更新
create or replace procedure pro_update_yw_sms_detail is 

TYPE                    TYPE_CURSOR IS REF CURSOR;
v_detail_cur            TYPE_CURSOR;
v_sql varchar2(2500);   ---------执行sql
v_day  varchar2(2);   ---------日期(天数)
v_errorcode number(10);   ---------状态报告
v_ismg_status varchar2(40);   ---------状态报告
v_msgid  number(20);         ---------detail表标示id
v_clientId  varchar(40);         ---------唯一标示id

v_start_time  number(10);     --------统计起始时间
v_end_time  number(10);    -------统计结束时间
i  number;  -----------处理的个数

begin
         i:=0;
         select date_to_num(sysdate) into v_start_time from dual;
        
         open v_detail_cur for select msgid,client_id,dd,errorcode,statu from yw_detail_info;
                                                                           
          loop 
                  fetch v_detail_cur into v_msgid,v_clientId,v_day,v_errorcode,v_ismg_status;
                  if v_detail_cur%notfound then 
                        exit;
                  end if;    

                  execute immediate 'update sms_mt_send_detail'||v_day||' set ERRORCODE = '||v_errorcode||',ISMG_STATUS='''||v_ismg_status||''' where MT_SEND_DETAIL_ID ='||v_msgid;

                  i:=i+1;
                  if i>100 then 
                     commit;
                  end if;   
          end loop;            
          close v_detail_cur;
          
          v_sql:='delete from yw_detail where client_id in (select client_id from (select client_id from yw_detail order by client_id asc) where rownum<'||i||')';
          execute immediate v_sql;
          
           select date_to_num(sysdate) into v_end_time from dual;
           insert into log_procedures(create_time,procedure_name,deal_result,flag,deal_time) 
                   values(sysdate,'异网短信状态更新:pro_update_yw_sms_detail','处理了'||i||'个数据',1,v_end_time-v_start_time);
           commit; 
 
end pro_update_yw_sms_detail;

4、视图view:

acreate or replace view yw_detail_info as
select "MSGID","CLIENT_ID","DD","ERRORCODE","STATU" from (select logg.msgid,logg.client_id,to_char(logg.send_time,'dd') dd,decode(detail.errorcode,'DELIVRD','0','0','0','1111') errorcode,decode(detail.errorcode,'0','DELIVRD','DELIVRD','DELIVRD',detail.errorcode) statu from log_yw_mobile logg
 inner join yw_detail detail on logg.client_id = detail.client_id
 order by logg.client_id asc ) where rownum<1000;

5、遇到的问题:

1)、ORA-00904: "EXPIR602": invalid identifier
这个是由于update的时候sms_mt_send_detail表中的errorcode是number类型,而上面取得的v_errorcode里面含有字母,所以一直报这个错。所以视图中把DELIVRD替换成0,其他的都替换成1111,这样插入就不会有问题了。
2)、ismg_status是varchar类型,所以得把引号带上:ISMG_STATUS='''||v_ismg_status||''' 
3)、三张表关联时把关联的字段建立索引,如:
create index yw_detail_clientId on yw_detail(client_id);
4)、之前本来想着update一条就delete一条,感觉效率太低,直接每次取前1000条,删除起来就方便多了。

6、Job定时执行存储过程(每过五分钟执行一次):

begin
  sys.dbms_job.submit(job => :job,
                      what => 'pro_update_yw_sms_detail;',
                      next_date => to_date('21-11-2012 21:55:27', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'sysdate+5/1440');
  commit;
end;
/ 
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    oracle自治事务(Trigger)

    Oracle数据库中的触发器是一种存储过程,它被设计为当特定事件发生时自动执行。这些事件包括数据修改操作,如INSERT、UPDATE或DELETE等。触发器可以确保数据的一致性和完整性,并帮助实现复杂的业务逻辑。 在某些...

    java 短信猫项目

    2. **数据持久化**:如果需要保存发送和接收的短信记录,那么可能需要用到数据库,例如MySQL或Oracle,进行数据存储和查询。 3. **异常处理**:为了保证程序的健壮性,异常处理是必须的,特别是在与硬件设备交互时,...

    sms短信平台源代码

    数据库设计包括短信表、用户表、状态报告表等,确保数据的高效存储和检索。 4. **用户接口**:用户界面允许管理员或企业用户通过Web或API发送和管理短信。JAVA源代码可能包含了Servlet、JSP(JavaServer Pages)...

    供应彩信二次开发接口,彩信开发平台,研发各种软件功能

    4.如接收彩信失败,彩信系统将更新MSG_Inbox表中对应的下载状态字段,以后不再下载 5.应用系统可读取MSG_Inbox表中的内容来操作成功接收的彩信 接收短信过程 1.手机用户向GPRS彩信设备发送了一条短信 2.彩信...

    短消息管理系统.zip

    在本系统中,可能会选择如MySQL或Oracle等关系型数据库,用于存储用户信息、短信内容、发送状态等数据。 2. JSP(JavaServer Pages):作为服务器端脚本语言,JSP在表现层发挥作用,动态生成HTML页面,将后端处理的...

    hs.rar_医院hs系统

    2. 短信服务模块:与电信运营商接口对接,实现短信的发送、接收、状态跟踪等功能。 3. 数据库管理模块:存储患者信息、预约记录、检查结果等数据,保证数据的完整性和一致性。 4. 接口集成模块:与其他医院信息...

    自学笔记自学笔记自学笔记自学笔记自学笔记

    SmsForwarder应用中自定义了多个广播事件来处理短信接收和转发的过程,主要包括短信接收、短信处理完成等事件。 ##### 3. 消息推送及处理 - **短信接收**:当手机接收到新的短信时,SmsForwarder会触发相应的广播...

    xxl-job-2.3.1.zip

    - **持久化存储**:支持MySQL、Oracle等主流数据库,便于数据备份和恢复。 7. **安全性**: - **权限控制**:对任务操作进行权限划分,保证系统安全。 - **加密传输**:通信过程采用HTTPS协议,保证数据传输的...

    JAVA_JSP企业合同管理系统.rar

    系统可能使用了如MySQL或Oracle等关系型数据库来存储合同信息、用户数据等。数据库表的设计应遵循规范化原则,确保数据的一致性和完整性。此外,SQL查询优化对于提高系统性能至关重要,开发者可能利用索引、JOIN操作...

    java实现图书馆管理系统

    数据库通常采用关系型数据库如MySQL或Oracle,用于存储图书信息(包括书名、作者、出版社、ISBN等)、读者信息(包括姓名、联系方式、借阅记录等)以及图书的借阅状态等数据。通过合理的设计,确保数据的一致性、...

    一个定点自动备份数据库的程序

    这个程序的目的是在设定的时间点自动执行数据库的备份操作,确保即使在系统出现故障时,也能快速恢复到某个已知的良好状态。下面我们将深入探讨相关的知识点。 首先,我们需要了解数据库备份的基本类型。常见的...

    网上饭店下载

    6. **订单处理**:后台系统应有订单处理逻辑,包括订单创建、确认、支付状态更新、订单配送状态跟踪等功能。可能需要实现定时任务来处理待确认的订单。 7. **用户管理**:注册、登录、密码找回等功能是必不可少的。...

    基于C#手机卡余额批量查询系统设计与实现

    此外,系统还采用了Oracle数据库用于存储手机卡信息和查询记录,以及SMS(Short Message Service)技术用于发送预警短信。 #### 系统功能与架构设计 ##### 功能概述 - **手机卡余额显示模块**:展示各气象站设备...

    java+jsp项目论坛短消息源码整理

    1. 数据库设计:可能使用了关系型数据库如MySQL或Oracle,存储用户信息、论坛帖子、短消息等数据。 2. JDBC(Java Database Connectivity):Java连接数据库的接口,用于执行SQL语句和处理结果。 四、用户认证与...

    JSP+SQL电量监视系统设计与实现(源代码+论文).rar

    3. 插入与更新:使用INSERT语句添加新的电量数据,UPDATE语句更新已有的数据,如修改设备状态、更新阈值设置等。 4. 删除操作:DELETE语句用于清理过期或不再需要的电量记录,保持数据库的高效运行。 三、系统实现...

    Flight_Reservation_System

    5. 任务调度:如Quartz或Celery,用于处理定时任务,如航班状态更新、退票退款处理。 三、关键功能实现 1. 航班查询:通过输入出发地、目的地、日期等信息,系统返回符合条件的航班列表。 2. 订票流程:用户选择...

    DMP.zip_c#监控_数据监控_数据表

    例如,对于一个订单系统,可能需要监控订单金额是否超出正常范围,或者订单状态是否在规定时间内完成更新。 数据表的监控通常涉及SQL查询和数据库交互,C#提供了ADO.NET框架,使得与各种数据库(如SQL Server、...

    javaee图书馆预约选座系统(代码)

    系统需要一个数据库来存储用户信息、座位状态、预约记录等数据。可能使用的关系型数据库如MySQL或Oracle,设计时需考虑表结构的合理性和数据的一致性,例如用户表、座位表、预约表等。 3. **用户管理** 用户注册...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例222 调用具有输出参数的存储过程 8.8 数据库结构的读取与修改 实例223 读取Access数据库结构 实例224 读取SQL Server数据库结构 8.9 图片、多媒体数据录入技术 实例225 对Access数据库进行录入和提取图片 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例222 调用具有输出参数的存储过程 8.8 数据库结构的读取与修改 实例223 读取Access数据库结构 实例224 读取SQL Server数据库结构 8.9 图片、多媒体数据录入技术 实例225 对Access数据库进行录入和提取图片 ...

Global site tag (gtag.js) - Google Analytics