最近做了个天然气的短信平台项目,以下内容是通过短信指令实现该用户的费用反馈信息。
希望对大家有帮助,也方便自己以后使用。。

CREATE OR REPLACE TRIGGER "TRI_SMS_RECEIVE"
BEFORE insert on sms_receive
FOR EACH ROW
Declare
phone number(11);/*手机(查询条件用)*/
phone_gr number(11);/*居民手机*/
phone_dw number(11);/*单位手机*/
dy_phone number(11);/*订阅手机*/
detail varchar2(500);/*内容*/
v_yhzh varchar2(36);/*用户号(截取用)*/
v_yhzh_gr varchar2(36);/*居民用户号*/
v_yhzh_dw varchar2(36);/*单位用户号*/
v_zl varchar2(36);/*短信指令*/
orgId_gr varchar2(36);/*居民区域码*/
orgId_dw varchar2(36);/*单位区域码*/
tq_text varchar2(1000);/*停气信息*/
fee number(11,2);/*当月费用*/
fee_yu number(11,2);/*可用余额*/
fee_qf number(11,2);/*目前欠费总额*/
time_month varchar2(50); /*用于定义当前的年月*/
time_js varchar2(50); /*用于接受用户发送的年月*/
Begin
begin
select sms_receive_sid_seq.nextval
into :new.receive_sid
from dual;
end;
time_month := to_char(sysdate,'yyyymm'); /*赋值:当前的年月*/

/*获得手机号码和短信内容*/
begin
select :new.sm_org_mobile,:new.sm_content into phone,detail from dual ;
end;
v_zl := substr(detail,1,4);/*赋值:截取前四位指令*/
v_yhzh := substr(detail,6,10);/*赋值:截取用户号*/
time_js := substr(detail,17,6);/*赋值:截取年月*/
dbms_output.put_line('得到手机和用户号'||phone||'--'||v_yhzh);
begin
/*查询出居民的区域码,手机,用户号*/
select hnpy.g.org_id,hnpy.g.gr_sj,hnpy.s.yqdz_userid_old into orgId_gr,phone_gr,v_yhzh_gr
from hnpy.v_yongqidizhi s, hnpy.v_gerenkehu g
where hnpy.s.yqdz_kh_id=hnpy.g.gr_id and hnpy.s.yqdz_kh_lx=2
and hnpy.g.gr_sj=phone and s.yqdz_userid_old=v_yhzh;
exception
WHEN NO_DATA_FOUND THEN
orgId_gr:=NULL;
phone_gr:=null;
v_yhzh_gr:=null;
end;
dbms_output.put_line('居民查询结束!得到手机phone_gr'||phone_gr||'用户号v_yhzh_gr'||v_yhzh_gr||'orgId_gr'||orgId_gr);
dbms_output.put_line('条件'||phone||'-'||v_yhzh);
begin
/*查询出单位的区域码,手机,用户号*/
select hnpy.g.org_id,hnpy.g.kh_dh_bg,hnpy.s.yqdz_userid_old into orgId_dw,phone_dw,v_yhzh_dw
from hnpy.v_yongqidizhi s, hnpy.v_danweikehu g
where hnpy.s.yqdz_kh_id=hnpy.g.kh_id and hnpy.s.yqdz_kh_lx=1
and g.kh_dh_bg=phone and s.yqdz_userid_old=v_yhzh;
exception
when no_data_found then
orgId_dw:=null;
phone_dw:=null;
v_yhzh_dw:=null;
end;
dbms_output.put_line('单位查询结束!得到手机phone_dw'||phone_dw||'用户号v_yhzh_dw'||v_yhzh_dw||'orgId_dw'||orgId_dw);
if v_zl='cxfy' or v_zl='CXFY' then /*查询费用-------*/
dbms_output.put_line('进入cxfy!');
dbms_output.put_line('phone_dw '||phone_dw);
dbms_output.put_line('v_yhzh_dw '||v_yhzh_dw);
dbms_output.put_line('用户号v_yhzh--'||v_yhzh);
begin
/*北京方面提供的sql语句beijing---------*/
select nvl(a.费用总金额, 0), NVL(c.余额, 0), NVL(b.总欠费金额, 0) into fee,fee_yu,fee_qf
from (select cbjl_yqzh, SUM(nvl(cbjl.cbjl_sjjfe, 0)) 费用总金额
from hnpy.v_chaobiao_jilu cbjl
where cbjl_cbqijian like time_month||'%' --日期格式YYYYMM 如:201101%
and cbjl_yqzh = v_yhzh --用户号
group by cbjl_yqzh) a
left join
(select cbjl_yqzh,SUM(nvl(cbjl.cbjl_yje + cbjl.cbjl_gwf, 0)) 总欠费金额
from hnpy.v_chaobiao_jilu cbjl
where cbjl_yqzh = v_yhzh --用户号
and cbjl_zt = '4'
group by cbjl_yqzh) b
on a.cbjl_yqzh = b.cbjl_yqzh
left join (select yqdz_userid_old, zjzh.khzj_keyong_yue 余额
from hnpy.v_zijinzhanghu zjzh
left join hnpy.v_yongqidizhi yqdz
on yqdz.yqdz_id = zjzh.khzj_yqdz_id
where yqdz_userid_old = v_yhzh) c --用户号
on a.cbjl_yqzh = c.yqdz_userid_old
left join (select yqdz_userid_old, dwzjzh.dwzj_keyong_yue 余额
from hnpy.v_danweizijinzhanghu dwzjzh
left join hnpy.v_yongqidizhi yqdz
on yqdz.yqdz_kh_id = dwzjzh.kh_id
where yqdz_userid_old = v_yhzh) d --用户号
on a.cbjl_yqzh = d.yqdz_userid_old; /*北京方面提供的sql语句-----------beijing*/
exception
when no_data_found then
fee := null;
fee_qf := null;
fee_yu := null;
end;
dbms_output.put_line(time_month);
dbms_output.put_line('得到费用'||fee||' '||fee_yu||' '||fee_qf);
/*验证手机号码是否是登记时的手机号码*/
if phone_gr is not null or v_yhzh_gr is not null or phone_dw is not null or v_yhzh_dw is not null then
begin
/*查找停气信息*/
select gas.info_content
into tq_text
from dx.gas_info gas
where rownum<2 and sysdate>=gas.start_date and sysdate<=gas.end_date
and gas.area_sid=orgId_gr or gas.area_sid=orgId_dw;
exception
when no_data_found then
tq_text := null;
end;
dbms_output.put_line('停气内容:'||tq_text);
/*将停气信息发送至用户手机*/
if tq_text is not null then/*2--*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,tq_text,sysdate,sysdate);
end if;/*--2*/
dbms_output.put_line('手机phone_gr '||phone_gr||'phone_dw '||phone_dw);
/*发送费用信息*/
if phone_gr is not null and fee is not null then/*1--*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_gr,'尊敬的居民用户!您本月的天燃气费共'||fee||'元,当前余额'||fee_yu||'元,目前共欠费'||fee_qf||'元!如需帮助请回复BZXX!',sysdate,sysdate);
elsif phone_dw is not null and fee is not null then
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_dw,'尊敬的单位用户!您本月的天燃气费共'||fee||'元,当前余额'||fee_yu||'元,目前共欠费'||fee_qf||'元!如需帮助请回复BZXX!',sysdate,sysdate);
else
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_dw,'尊敬的用户!暂时没有当月的相关信息!如需帮助请回复BZXX!',sysdate,sysdate);
end if;/*--1*/
else
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!请用您登记的手机号码来查询!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
elsif v_zl='cxwy' or v_zl='CXWY' then /*查询往月费用-------*/
dbms_output.put_line('进入cxwy!');
begin
/*北京方面提供的sql语句beijing---------*/
select nvl(a.费用总金额, 0), NVL(c.余额, 0), NVL(b.总欠费金额, 0) into fee,fee_yu,fee_qf
from (select cbjl_yqzh, SUM(nvl(cbjl.cbjl_sjjfe, 0)) 费用总金额
from hnpy.v_chaobiao_jilu cbjl
where cbjl_cbqijian like time_js||'%' --日期格式YYYYMM 如:201101%
and cbjl_yqzh = v_yhzh --用户号
group by cbjl_yqzh) a
left join
(select cbjl_yqzh,SUM(nvl(cbjl.cbjl_yje + cbjl.cbjl_gwf, 0)) 总欠费金额
from hnpy.v_chaobiao_jilu cbjl
where cbjl_yqzh = v_yhzh --用户号
and cbjl_zt = '4'
group by cbjl_yqzh) b
on a.cbjl_yqzh = b.cbjl_yqzh
left join (select yqdz_userid_old, zjzh.khzj_keyong_yue 余额
from hnpy.v_zijinzhanghu zjzh
left join hnpy.v_yongqidizhi yqdz
on yqdz.yqdz_id = zjzh.khzj_yqdz_id
where yqdz_userid_old = v_yhzh) c --用户号
on a.cbjl_yqzh = c.yqdz_userid_old
left join (select yqdz_userid_old, dwzjzh.dwzj_keyong_yue 余额
from hnpy.v_danweizijinzhanghu dwzjzh
left join hnpy.v_yongqidizhi yqdz
on yqdz.yqdz_kh_id = dwzjzh.kh_id
where yqdz_userid_old = v_yhzh) d --用户号
on a.cbjl_yqzh = d.yqdz_userid_old; /*北京方面提供的sql语句-----------beijing*/
exception
when no_data_found then
fee := null;
fee_qf := null;
fee_yu := null;
end;
dbms_output.put_line('time_js--'||time_js);
/*验证手机号码是否是登记时的手机号码*/
if phone_gr is not null or v_yhzh_gr is not null or phone_dw is not null or v_yhzh_dw is not null then
begin
/*查找停气信息*/
select gas.info_content into tq_text
from dx.gas_info gas
where rownum<2 and sysdate>=gas.start_date and sysdate<=gas.end_date
and gas.area_sid=orgId_gr or gas.area_sid=orgId_dw;
exception
when no_data_found then
tq_text := null;
end;
/*将停气信息发送至用户手机*/
if tq_text is not null then/*2--*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,tq_text,sysdate,sysdate);
end if;/*--2*/
/*发送费用信息*/
if phone_gr is not null and fee is not null then/*1--*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_gr,'尊敬的用户!您'||time_js||'月的天燃气费共'||fee||'元,当前余额'||fee_yu||'元,目前共欠费'||fee_qf||'元!如需帮助请回复BZXX!',sysdate,sysdate);
elsif phone_dw is not null and fee is not null then
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_dw,'尊敬的用户!您'||time_js||'月的天燃气费共'||fee||'元,当前余额'||fee_yu||'元,目前共欠费'||fee_qf||'元!如需帮助请回复BZXX!',sysdate,sysdate);
else
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone_dw,'尊敬的用户!您没有该月的相关信息!如需帮助请回复BZXX!',sysdate,sysdate);
end if;/*--1*/
else
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!请用您登记的手机号码来查询!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
elsif v_zl='cxtq' or v_zl='CXTQ' then /*查询停气-------*/
dbms_output.put_line('进入cxtq!');
/*验证手机号码是否是登记时的手机号码*/
if phone_gr is not null or v_yhzh_gr is not null or phone_dw is not null or v_yhzh_dw is not null then
/*查找停气信息内容*/
begin
select gas.info_content into tq_text
from dx.gas_info gas
where rownum<2 and sysdate>=gas.start_date and sysdate<=gas.end_date
and gas.area_sid=orgId_gr or gas.area_sid=orgId_dw;
exception
when no_data_found then
tq_text := null;
end;
/*将停气信息发送至用户手机*/
if tq_text is not null then/*2--*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,tq_text,sysdate,sysdate);
else /*没有停气信息*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'没有找到近期停气信息!如需帮助请回复BZXX!',sysdate,sysdate);
end if;/*--2*/
else
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!请用您登记的手机号码来查询!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
elsif v_zl='dyxx' or v_zl='DYXX' then/*订阅-------*/
dbms_output.put_line('进入dyxx!');
/*验证手机号码是否是登记时的手机号码*/
if phone_gr is not null or v_yhzh_gr is not null or phone_dw is not null or v_yhzh_dw is not null then
/*查询出是否订阅过*/
begin
select r.user_mobile into dy_phone from dx.dy_order r where r.user_mobile=phone ;
exception
when no_data_found then
dy_phone := null;
end;
/*判断是否订阅*/
if dy_phone is not null then
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'您已经订阅!请不要重复订阅!如需帮助请回复BZXX!',sysdate,sysdate);
else/*添加到订阅表,同时发送通知短信*/
insert into dy_order (user_mobile,user_sid,create_date,add_staff)
values (phone,v_yhzh,sysdate,'admin') ;
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'订阅成功!系统将每月定时向您发送您的费用信息!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
else/*不是登记时的手机号码*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!请用您登记的手机号码查询!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
elsif v_zl='tdxx' or v_zl='TDXX' then /*退订-------*/
dbms_output.put_line('进入tdxx!');
/*验证手机号码是否是登记时的手机号码*/
if phone_gr is not null or v_yhzh_gr is not null or phone_dw is not null or v_yhzh_dw is not null then
/*查询出是否订阅过*/
begin
select r.user_mobile into dy_phone from dx.dy_order r where r.user_mobile=phone and r.user_sid=v_yhzh ;
exception
when no_data_found then
dy_phone := null;
end;
if dy_phone is null then
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'未发现您有订阅信息!如需帮助请回复BZXX!',sysdate,sysdate);
else
/*从订阅表里删除,同时发送通知短信*/
delete from dx.dy_order d where d.user_mobile=phone and d.user_sid=v_yhzh ;
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'退订成功!欢迎再次使用!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
else /*不是登记时的手机号码*/
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!请用您登记的手机号码查询!如需帮助请回复BZXX!',sysdate,sysdate);
end if;
elsif v_zl='bzxx' or v_zl='BZXX' then /*帮助-------*/
dbms_output.put_line('进入bzxx!');
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'欢迎使用查询帮助指令!1.查询费用:CXFY#用户号 2.查询往月费用:CXWY#用户号#年年年年月月 3.查询停气信息:CXTQ#用户号 4.订阅信息:DYXX#用户号 5.退订信息:TDXX#用户号',sysdate,sysdate);
else /*其他的指令-------*/
dbms_output.put_line('进入其他!');
insert into dx.sms_task (mt_group_id,mt_dst_num,mt_content,mt_add_time,mt_at_time)
values (1,phone,'指令有误!如需帮助请回复BZXX!',sysdate,sysdate);
end if;

end;

自己写的短信指令查询燃气费oracle触发器相关推荐

  1. oracle触发器 发消息短信,自个儿写的短信指令查询燃气费oracle触发器

    当前位置:我的异常网» 数据库 » 自个儿写的短信指令查询燃气费oracle触发器 自个儿写的短信指令查询燃气费oracle触发器 www.myexceptions.net  网友分享于:2013-0 ...

  2. 移动联通电信三大运营商推出新服务,一条短信快速查询个人出行轨迹!

    虽然目前拐点并未出现,疫情也并未散去,但是,最近有部分企业已经开始复工,有的人已经开始已经返回到工作岗位.在返工过程中,会遇到一些问题,比如回到租住小区被询问去过哪里?有没有去过疫区之类的?那么怎么证 ...

  3. 中国移动短信指令大全

    来源:诺基亚手机网 中国移动短信指令大全下面是我从网收集的中国移动手机短信指令,基本包含了全部的了. 弄个文本收藏一下 说不定某个时候它们就有用了. 全球通的: =_=发送 YE 到 10086办理 ...

  4. android 短信位置,浅析Android手机卫士之手机实现短信指令获取位置

    推荐阅读: 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy ...

  5. 激活facetime和imessage国际短信00447537410217不扣费?

    听说开一次(激活)facetime和imessage需要发送国际短信,对于扣费问题始终没有弄清楚,今天查了一下短信扣费记录,发现竟然没有扣费,用的套餐是移动全球通. 开关了多次,发送了多次国际短信,显 ...

  6. 中国电信短信指令代码表--天翼用户留着备用

    发送短信代码到10001,中国电信将以短信的形式回复你查询的内容.如DYHF,表示当月话费:ZHYE表示账户话费:QF表示欠费.短信代码如下表. 业务功能归类 业务名称 数字代码 拼音代码 数字指令 ...

  7. ASP.net 基于Ajax 站内短信即时查询的思路

    站内短信收发方面没有什么可说的,关键是在用Ajax做即时查询的时候碰到了些问题,昨晚终于解决了!同时测试通过! 在数据库设计上面,基本上要设计三个表, 1.短信发送 2.短信收取 3.状态表 整个数据 ...

  8. python短信发送查询数据库结果_python3读取数据库短信验证码

    2019独角兽企业重金招聘Python工程师标准>>> 现在网站好多都要短信验证,做自动化时想要绕过有很多方法 1.测试环境注释掉这个功能,但发布到其它环境怕会有遗漏 2.万能码,但 ...

  9. python短信发送查询数据库结果_向Django数据库中的每个号码发送短信

    使用python/django/twilio向每个员工都有"管理"关系的表中的员工发送SMS时遇到问题 表Employees包含: fname,lname,电话号码,组 在视图.p ...

最新文章

  1. Nature Methods | TooManyCells:单细胞聚类和可视化方法
  2. c语言 结构体映射,内存管理之4:页面映射中的结构体
  3. fatal error C1010:unexpected end of file while looking for precompiled header directive报错的解决办法
  4. 怎样查看已经记住密码的网站的密码
  5. Transformer温故知新
  6. 从没想到监控可以这么做!阿里云RDS智能诊断系统首次公开
  7. Left join后用and和where的区别
  8. flat在java中的含义_Java 9中Collectors.flatMapping()方法的重要性?
  9. Ajax--serialize应用表单数据序列化
  10. Random()种子数
  11. CF995C Leaving the Bar
  12. 百款 TWS蓝牙耳机 蓝牙天线拆机分析与仿真
  13. 从草根到百万年薪程序员的二十年风雨之路。
  14. 解决MAC用HDMI连接显示器就没声音问题
  15. linux中的设备管理
  16. 得到--如何用写作高效管理团队?
  17. Houdini流体>>粒子流体导出到unity笔记
  18. Phalanx 动态规划
  19. 【电子存证】互联网企业存证需求与痛点
  20. Python基础—内置函数、匿名函数、递归函数

热门文章

  1. html怎么div剧中,css怎么使div居中?
  2. 梅科尔工作室——KNN临近算法
  3. 图片在IE浏览器显示异常显示不出来显示叉,在其他浏览器正常显示的解决方案
  4. Erlang数据类型的表示和实现(5)——binary
  5. mysql var和varp的区别_EXCEL中VAR函数和VARP函数什么区别
  6. 2021年低压电工考试及低压电工最新解析
  7. 那些炫酷的词云图是怎么做出来的?
  8. JavaScript 绘制柱状图
  9. 三菱服务器报系统错误,10个三菱PLC常见错误代码大全及解决方案
  10. Docker学习篇——使用Docker部署账单微服务项目