【问题标题】:Oracle 11g Error: Ora-00942 on existing tableOracle 11g 错误:现有表上的 Ora-00942
【发布时间】:2013-04-07 20:02:16
【问题描述】:

当我在 PL/SQL Developer 中运行此查询以查看用户 Scott 可用的表时,我得到了 11 个表,包括表 EMP。

Select Table_Name
From All_Tables
Where Owner = 'SCOTT';

但是当我尝试在 PL/SQL Developer 中使用这样的全选访问表 emp 时:

select * from emp;

我收到 0ra-00942 表或视图不存在错误。然而,在同一架构中的 SQL*PLUS 中,相同的选择语句给了我表 emp 的内容。是什么导致 PL/SQL Developer 中出现此错误?

【问题讨论】:

    标签: oracle11g sqlplus plsqldeveloper


    【解决方案1】:

    当您使用 PL/SQL Developer 时,您使用什么用户连接到数据库?假设您使用的是 SCOTT 以外的用户,您可能需要使用完全限定名称

    SELECT *
      FROM scott.emp
    

    您还可以在您使用的任何架构中创建同义词

    CREATE SYNONYM emp
       FOR scott.emp
    

    然后在查询中使用同义词

    -- This resolves to the private synonym that you just created
    SELECT *
      FROM emp
    

    【讨论】:

    • 感谢 Justin .....我以用户 Scott 的身份登录,但如果我完全限定了您指出的名称 (scott.emp),则效果很好。
    • @Victor - 这强烈暗示您实际上并未以 SCOTT 身份登录。您可以以 SCOTT 身份登录并且查询需要完全限定的模式名称的唯一方法是,如果您发出 ALTER SESSION SET current_schema = some_other_schema,这似乎不太可能。
    猜你喜欢
    • 2020-11-21
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多