如何在存储过程中调用另一数据库的存储过程?

yangyipeng 2003-09-14 05:12:12
在存储过程中调用本数据库的另一存储过程我懂了。
但是我现在需要调用不同机器不同数据库的另一存储过程要如何调用呢???
...全文
385 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我就是用的dblink可是提示过程未定义
leecooper0918 2003-12-13
  • 打赏
  • 举报
回复

建立数据链路:

create database link NewLink
connected to Username identified by
password
using 'sidname'


使用远程过程调用:

1) 创建引用远程数据表的本地过程

2) 创建由本地应用程序调用的远程过程

execute proc@linkname

规则:
过程的正确定位取决于数据的分布及数据的使用方式。
重点应放在将数据查询中通过网络传递的数据量最小化。
过程所在的数据库应含有进程操作中使用的大多数数据。

示例:
create procedure MY_RAISE(MY_EMP_NO IN NUMBER,
RAISE IN NUMBER)
as
begin
Update EMPLOYEE@HR_LINK
set Salary=Salary + Raise
where Empno=MY_EMP_NO
end ;

策略: 因为此过程只访问远程节点上的一个表,可考虑将
此进程移到远程数据库上,并且从进程的 from子句
中删除对这个数据库链接的引用。然后,通过使用
数据库链接从本地数据库调用该过程。

Execute MY_RAISE@HR_LINK (1234, 10000)

好处: 所有的进程处理均在包含操作数据的数据库中进行。
远程过程调用将把完成此进程处理所需要的网络流量
最小化.

简化: 创建同义词(SYNONYM)
create synonym MY_RAISE for MY_RAISE@HR_LINK
execute MY_RAISE(1234,10000)
fanth 2003-12-13
  • 打赏
  • 举报
回复
我也想知道!
liuhp0819 2003-12-12
  • 打赏
  • 举报
回复
不用数据库,可以建同义词,不同机器可以建数据链
liuhp0819 2003-12-12
  • 打赏
  • 举报
回复
访问本地不同用户,只要在对象(如表)前加用户名就可以了。如 user.table
chanet 2003-12-12
  • 打赏
  • 举报
回复
不同的数据库可以建立数据链路. (就是 dblink)
就可以了.
fbjia 2003-12-12
  • 打赏
  • 举报
回复
不同数据库,好象很难,我也想知道?
beckhambobo 2003-12-12
  • 打赏
  • 举报
回复
像建立同义词也可实现
  • 打赏
  • 举报
回复
有没有人知道啊
luckysxn 2003-12-12
  • 打赏
  • 举报
回复
建立数据库链接(dblink)

exec yourprocedurename@dblinkname
  • 打赏
  • 举报
回复
谁能详细的讲一下
ColinGan 2003-09-15
  • 打赏
  • 举报
回复
必须先对被调用的存储过程及该存储过程操作过的所有表、视图等授权(resource权限),否则失败
yangyipeng 2003-09-15
  • 打赏
  • 举报
回复
是不是不可以啊?大家知道我得错误是什么原因吗?
怎么都没有人回答我得问题,我很急得
yangyipeng 2003-09-15
  • 打赏
  • 举报
回复
ORA-04052: 在查找远程对象 HWFX.ADDNEWSTUDENT@JFLINK.US.ORACLE.COM 时出错
ORA-00604: 递规 SQL 层 1 出现错误
ORA-02085: 数据库连接 JFLINK.US.ORACLE.COMÓëYPALEX.US.ORACLE.COM相连接

出现上面的错误是什么问题??我现在只是本机的不同用户表空间的访问。
bfbd 2003-09-14
  • 打赏
  • 举报
回复
你给另外一个数据库的存储过程建一个本地同义词试试。
然后调用同义词。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧