1

遇到一种情况,在模式中我有一个表,比如表 ACTION ,而我也有一个名为 ACTION 的同义词,它将另一个表引用到另一个模式。

现在,当我运行查询

从动作中选择 *

它将从表中选择记录,但不选择同义词。

无论如何让我从同义词和表格中同时选择?

谢谢

4

3 回答 3

5

我不认为您的 ACTION 同义词与您的 ACTION 表位于相同的架构中,因为这在 Oracle 中是不允许的。您的 ACTION 同义词很可能存在于其他模式中,也许它是一个 PUBLIC 同义词。如果是这种情况,您可以使用

select * from ACTION
union 
select * from public.ACTION
于 2008-11-07T13:26:48.393 回答
4

好吧,你的底层 ACTION 表应该被重命名,比方说做 LOCAL_ACTION。

假设您的 ACTION 同义词在 otheruser.LOCAL_ACTION 表上...

然后您可以将 ACTION 同义词重新定义为:

SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION

然后最后, select * from ACTION 将为您提供两个表的组合列表。

于 2008-11-07T13:01:27.917 回答
1

表和私有同义词确实共享相同的名称空间,所以这是一个公共同义词:http: //download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723

请注意,UNION 是结果集的隐式不同。你需要的是 UNION ALL。

select * from ACTION
union all
select * from public.ACTION
于 2008-11-10T13:44:31.010 回答