在系统级创建公共同义词

时间:2009-07-29 03:39:30

标签: sql oracle view public synonym

我已经在我关于在系统级创建视图的其他问题中建议创建了公共同义词。话虽如此,我已经在视图中创建了单独的公共同义词,这样我就不必再连接到单个域了。我现在的问题是如何创建一种主类公共同义词来捕获我之前创建的所有同义词。可以使用“for”语句到什么程度?

实施例: 在系统级别,我将为创建MYVIEW的每个域运行查询: 为domain1.myview创建或替换公共同义词domain1_myview; 为domain2.myview创建或替换公共同义词domain2_myview; 为domain3.myview创建或替换公共同义词domain3_myview;

然后我上面有3个公共同义词。

然后我尝试写下声明(出于绝望 - 而不是专家),如下所示希望只有一个Master_MYVIEW但失败了: 创建或替换公共同义词MASTER_MYVIEW for(select * from domain1_myview union all select * from domain2_myview union all select * from domain3_myview);

上述错误:“ORA-00995:缺少或无效的同义词标识符”

希望有人可以协助我完成这项任务。祝你有个美好的一天。

1 个答案:

答案 0 :(得分:1)

首先尝试创建名为MASTER_MYVIEW的视图(您可能还需要处理其中的权限):

create view master_myview as select ...;

然后为该新视图创建一个公共同义词:

create or replace public synonym master_myview for <owner>.master_myview;