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

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存储过程,http://www.myexceptions.net/oracle-develop/177537.html

oracle 存储过程 状态,Oracle存储过程(定时更新短信状态汇报)相关推荐

  1. oracle 定期更新状态,Oracle存储过程(定时更新短信状态报告)

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

  2. Spring Boot定时发送短信

    Spring Boot定时发送短信的两种方式 不少项目中估计都有遇到定时发送这个梗,我也遇到了,页面中下拉框选项有立即发送以及定时发送,立即发送就不用说了,定时发送可以讲一下,定时的方式有很多种,Ja ...

  3. android 自动发彩信,Android编程实现定时发短信功能示例

    本文实例讲述了Android编程实现定时发短信功能.分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中 ...

  4. android+发短信示例,Android编程实现定时发短信功能示例

    本文实例讲述了Android编程实现定时发短信功能.分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在AndoridManifest.xml中 ...

  5. MTK 7.1 定时发送短信功能

    此功能的主要设计思路是: 在短信添加附件的list列表中添加一个定时发送短信的选项,用户可以通过添加定时短信来设置短信要发送出去的时间,定时短信发送出去后,后台定时器会根据用户设置的时间进行定时判定, ...

  6. 关于定时发短信业务的讨论

    关于定时发短信业务的讨论 事情的起因 需求:在每次线下活动的开始的前一天晚上七点给报名参加价值研习社的用户发一条通知短信用户记得准时参加活动. 备注:因为我们的业务并发不是很大,所以很多场景并没有考虑 ...

  7. Spring+Quartz制作定时祝福短信

    Spring+Quartz制作定时祝福短信 文章目录 前言 一.我的准备过程 二.配置文件信息 1.applicationContext.xml内容 2.message.properties内容 3. ...

  8. 延迟发送:4款定时发送短信的应用程序

    发送短信已经成为朋友.家人甚至是同事之间最为常见的通讯方式之一.由于短信具备定时发送及发送报告等功能,使用起来非常灵活.当然,短信的应用程序中常常默认带有发送报告功能,而没有定时发送的功能,若是能具备 ...

  9. python邮件定时发送短信_Python趣味编程:如何定时发短信给Ta讲笑话

    原标题:Python趣味编程:如何定时发短信给Ta讲笑话 人一无聊,就会想:反正每天都要给Ta问候一声早安,为何不同时讲个笑话呢?如果能写个程序每天早上定时给Ta发一条问候早安同时讲一个笑话的短信该多 ...

最新文章

  1. java input属性_如何在h:inputText中指定命令属性?
  2. leetcode 292. Nim Game | 292. Nim 游戏(DP->数学推理)
  3. flutter调用api_如何在Flutter(REST API)中进行API调用
  4. mysql备份到邮箱,备份网站mysql数据到邮箱/ftp
  5. 用MATLAB玩转机器人--第五章 机器人的数学建模
  6. 修改ssh端口centos7
  7. 小白_Unity引擎_Console控制台
  8. 什么是JDBC,JDBC的主要功能是什么?
  9. IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
  10. 设置windows自动登录
  11. python 清空文件_python:文件的读取、创建、追加、删除、清空
  12. 第5课:Scratchjr说话指令
  13. 习题11-1 输出月份英文名 (15 分)
  14. C语言实现二叉平衡树
  15. python资源管理器安装_Python学习笔记-Python安装
  16. php怎么生成一个文件夹里,php创建文件夹目录的教程
  17. J0ker的CISSP之路:复习-Information Security Management(2)
  18. 光耦p621引脚图_TOSHIBA光耦TLP系列的部分光耦的应用
  19. 计算机应用安全检查通报,Microsoft 安全通报 4092731
  20. 我的世界java版指令保留物品栏_我的世界或将在模式切换中保存物品栏

热门文章

  1. 微信小程序实现滚动条
  2. 机器视觉 光学工程专业_大学光学工程专业找工作简历怎么写
  3. Paxos(帕克索斯)一致性算法[卷一]
  4. 20201212英语单词学习(仅供自己记录)
  5. Java开发实战一:jeeplus中集成wangEditor
  6. Django DTL模板变量使用
  7. 序列比对在biopython中的处理
  8. 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解!
  9. 科创西安:秦创原·鸿蒙生态人才培养发展论坛成功举行
  10. VS2008C#Sqlserver2008数据库的连接以及增删改查