oracle远程调用存储过程,Oracle-oracle 调用远程存储过程并写入数据

因为问题不是非常明确,所以需要分情况来讨论。

要考虑几个问题:1、是否需要在一个事务中实现?2、对方数据库若不是oracle的话,是否在oracle发布的gateways支持的数据库列表中。

对于事务的控制,个人认为是关键,这可以查看“二阶段提交”相关知识。

oracle发布的gateway支持非常多种的接入类型,常用数据库都无问题。

以下将你的问题理解成:oracleA库在底层触发器或者过程或者函数中需要调用oracleB库中的存储过程,并实现将数据写入B库中的操作。

步骤1:

建立DBLINK

假设B库服务名orcl,访问用户名密码comm/password

两种方式:

1、已经配置本地服务,服务名orcl

create public database

link link_orcl connect to comm

identified by password using 'orcl';

2、未配置本地服务

create database link link_orcl

connect to comm identified by password

using '(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)';

步骤2:

假设库B(上述orcl库)存在如下存储过程

create or replace procedure comm.proc_InsertTable(v1 in varchar2)

is

begin

insert into table1

(

col1

)

values(

v1

);

end;

步骤3:

在A库中假设存在一个存储过程:

create or replace procedure proc_Local(vLocal in varchar2)

is

begin

comm.proc_InsertTable@link_orcl(vLocal);

end;

在A库任意地方调用本地存储过程,或通过编码调用A库存储过程皆可。

注意:

建立完DBLink后,可通过本地的SQL查询语句来检验验证有无通过,如select * from comm.table1@link_orcl;(comm.table1存在与B库中)

A库中调用存储过程的写法

注意B库中创建存储过程的用户对操作的表的权限。

希望能帮到你。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值