我在不同的服务器上有 2 个 Oracle 数据库:
甲骨文 1 甲骨文 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 数据库?
最佳答案
这可能是供股。您在目标 Oracle 数据库上的数据库链接具有您要调用的过程。它必须具有该包/过程的执行权限。
此外,我发现我必须使用架构名称调用那些目标过程。例如 schema.package.procedure@dblink(parms)。如果我在 proc 调用上没有架构,则程序包将无法编译。
旁注...如果您通过返回 refCursor 的链接调用过程,则它将不起作用。 (至少在 Oracle 10 和 11 上)。在那些情况下,我不得不退回一张 table 。
关于database - 通过Stored Procedure连接不同的Oracle数据库和转表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38458966/