首页 > 解决方案 > 在 oracle 中引用另一个模式中的表

问题描述

我想在没有模式前缀或更改会话的情况下引用另一个模式中的多个表。

我有以下查询 -

Select * from schema1.app_table 

在具有模式前缀的包中有多个这样的查询。

我必须将表导出到不同的模式。我真的不想更改所有包中的模式前缀。

我尝试了同义词,不幸的是它没有用。

标签: javasqloracle12c

解决方案


没有魔法。

您正在更改表所在的架构。请注意我对“改变”一词的使用。这意味着您必须“更改”引用表的所有内容。

如果你讨厌质量,你可以试试这个:在旧模式中创建一个同义词来引用新模式中的表。在您的示例中,我们将新模式称为“blammySchema”,我们将表称为“kapow”。

以下是一些步骤:

  1. 将 schema1 中的所有表“导出”到 blammySchema(所有适用的表)。
  2. 对于“导出”到 blammySchema 的每个表,在 schema1 中创建一个引用 blammySchema 中的表的同义词。

这是一个同义词示例:

create synonym schema1.kapow for blammySchema.kapow

创建所有同义词后,重新编译您的包。


推荐阅读