日期:2014-05-16  浏览次数:20413 次

自己写的短信指令查询燃气费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!');
&