最近遇到个需求,需要将某个库的短信数据传送到短信中心的库中
1、给本数据库创建dblink连接
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
)
(CONNECT_DATA =
(SERVICE_NAME =msgp)
)
)';
136.160.41.198----目标数据库地址
msgp--------目标数据库实例
msgp_itwg -----目标数据库用户
msgp_itwg_2014------目标数据库用户密码
创建完成验证下:SELECT * FROM intf.PUBLIC_INTF_DATA@pms_dblink;
能执行成功就表示创建成功,创建语句的含义是,利用msgp_itwg用户创建一个dblink,然后通过这个dblink访问inf用户下的表数据
2、写存储过程
有两个存储过程,一个是查本地数据,一个是插目标数据库
查询:
CREATE OR REPLACE PROCEDURE init_sms_to_msgp is
t_guid varchar2(32);
t_staffName varchar2(20);
t_objID number(16);
t_smsCnt number(9);
is_send number(9);
t_start_time varchar(100);
t_end_time varchar(100);
cursor c_itsm is select note_id,note,obj_nbr,staff_id,create_date from issu_note_listing where deal_flag=0;
BEGIN
For itsm In c_itsm Loop
select sys_guid() into t_guid from dual;
send_sms(t_guid,itsm.obj_nbr,itsm.note);
update issu_note_listing set deal_flag=1 where note_id=itsm.note_id;
end loop;
END init_sms_to_msgp;
插入:
BEGIN
insert into intf.PUBLIC_INTF_DATA@db_msgp (system_id,other_sys_order_id,acc_nbr,acc_nbr_type_cd,serv_spec_id,contact_info,msg_content,send_date,insert_date,deal_flag) values
('129',t_guid, sms_phone,0,'101200074',sms_phone,sms_note,sysdate,sysdate,1 );
commit;
END send_sms;
3、设置job
sys.dbms_job.submit(job => :job,
what => 'init_sms_to_msgp;',
next_date => to_date('30-06-2017 14:57:57', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+1/1440');//一分钟执行一次
commit;
end;
/
完成了。