自己写的短信指令查询燃气费oracle触发器
最近做了个天然气的短信平台项目,以下内容是通过短信指令实现该用户的费用反馈信息。
希望对大家有帮助,也方便自己以后使用。。
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!');
&