通过存储过程

时间:2016-07-19 12:43:11

标签: database oracle stored-procedures oracle11g

我在不同的服务器上有2个Oracle数据库:

Oracle 1 Oracle 2

我想运行一个将在Oracle 1中执行的存储过程并执行以下操作:

a)与Oracle 2连接 b)在Oracle 2中创建数据库链接以与Oracle 1连接或使用现有的链接(如果已创建) c)将表1从Oracle 1复制到Oracle 2

我可以使用:

CREATE PUBLIC DATABASE LINK mylink
  CONNECT TO source_user IDENTIFIED BY source_password
  USING source_entry_in_tnsnames';

复制数据:

INSERT INTO mytable SELECT * FROM mytable@mylink;

我写了一个存储过程并包含了这些但是无法与Oracle 2连接。我们如何从存储过程连接到另一个Oracle数据库?

1 个答案:

答案 0 :(得分:1)

这可能是一项供股问题。目标Oracle DB上的数据库链接,其中包含您要调用的过程。它必须具有该包/ proc的执行权限。

另外,我发现我必须使用模式名称调用那些目标proc。例如schema.package.procedure@dblink(parms)。如果我在proc调用上没有架构,那么包将无法编译。

Side Note ...如果您通过返回refCursor的链接调用过程,则无效。 (至少在Oracle 10和11上)。在那些情况下,我不得不退回一张桌子。