database - 通过Stored Procedure连接不同的Oracle数据库和转表

标签 database oracle stored-procedures oracle11g

我在不同的服务器上有 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/

相关文章:

mysql - MySQL 中具有 bool 值的行到列

set 语句中的 MySQL 脚本

mysql - 如何解决mysql程序中的语法错误?

sql - 我可以在另一个 listagg 查询的 where 子句中使用一个 listagg 查询的输出吗

php - mysql过程只返回一个/第一行

database - 在 Mac OS X 上寻找 DB Schema 绘图工具

mysql - 如何最好地构建此数据库查询?

database - 如何在 oracle 11g 中对具有外键引用的另一个表的所有表启用触发器?

c# - DbProviderFactories 中未列出的 Oracle 数据提供程序 (ODP.NET)

oracle - Oracle 中的假脱机会在列中添加空格...我该如何避免呢?