我有两个架构TEST
和DEV
。我正在使用TEST模式,我希望在SDB
模式中获取以DEV
开头的表列表。所以我使用了以下查询:
SELECT TABLE_NAME FROM DEV.USER_TABLES WHERE UPPER(TABLE_NAME) LIKE 'SDB%';
但我得到ORA-00942 error
。这是补助金的问题吗?或者是否有任何其他方法可以获取DEV
架构中的表列表。
答案 0 :(得分:2)
USER_TABLES
是SYS
视图,仅包含您拥有的对象。它并不作为每个用户架构的一部分存在(因此没有DEV.USER_TABLES
),并且您无法在其中看到其他用户的对象。请改为使用ALL_TABLES
,指定所有者:
SELECT TABLE_NAME FROM ALL_TABLES
WHERE OWNER = 'DEV'
AND UPPER(TABLE_NAME) LIKE 'SDB%';
如果您拥有该表,则只能在其他模式中查看该表。如果你没有,那么它就不会被列出;在这种情况下,如果您有权查看,则可以查询DBA_TABLES
。
答案 1 :(得分:2)
你需要这个:
SELECT TABLE_NAME FROM all_tables where OWNER = 'DEV' and UPPER(TABLE_NAME) LIKE 'SDB%';
all_tables包含您有权访问的数据库中的所有表,以便您选择该表。
你得到的是因为这不是一个特定的用户表,你不能从dev.ORACLE TABLES中选择,当你从那里选择时,不要指定一个模式