【问题标题】:Refer tables in another schema in oracle在 oracle 中引用另一个模式中的表
【发布时间】:2019-02-19 21:10:21
【问题描述】:

我想引用另一个模式中的多个表,而不需要模式前缀或更改会话。

我有以下查询 -

Select * from schema1.app_table 

在具有架构前缀的包中有多个这样的查询。

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

我尝试了同义词,但不幸的是它不起作用。

【问题讨论】:

    标签: java sql oracle12c


    【解决方案1】:

    没有魔法。

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

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

    这里有一些步骤:

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

    这是一个同义词示例:

    create synonym schema1.kapow for blammySchema.kapow
    

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

    【讨论】:

    • 嗨。感谢您的答复。我尝试使用同义词。我需要在所有包中进行代码更改以开始引用引号中的同义词名称。有没有其他不使用同义词的方法?
    • 在 oracle 中引用同义词时完全不需要使用引号。
    • 嗨。这个解决方案对我不起作用。我无法保留 schema1。
    • @SurajkuamrShinde 在拥有包的架构中创建同义词,而不是在 schema1 中。使用同义词不需要引号。
    • 嗨。感谢您的答复。这些包也将移至新模式。我知道正确的方法是修改软件包。我现在正在寻找其他不修改包的方法。
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    相关资源
    最近更新 更多