微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle 创建dblink,传送数据

最近遇到个需求,需要将某个库的短信数据传送到短信中心的库中

1、给本数据库创建dblink连接


createpublicdatabaselinkpms_dblinkconnecttomsgp_itwgidentifiedbymsgp_itwg_2014
  using'(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST= 136.160.41.198)(PORT=1521))
)
(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;


插入:

CREATEORREPLACEPROCEDUREsend_sms(t_guidvarchar2,sms_phonevarchar2,sms_notevarchar2)is
BEGIN
insertintointf.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,'101200074',sms_note,sysdate,1);
commit;
ENDsend_sms;

3、设置job

begin
sys.dbms_job.submit(job=>:job,
what=>'init_sms_to_msgp;',
next_date=>to_date('30-06-201714:57:57','dd-mm-yyyyhh24:mi:ss'),
interval=>'sysdate+1/1440');//一分钟执行一次
commit;
end;
/


完成了。

原文地址:https://www.jb51.cc/oracle/208500.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐