2013-04-07 55 views
0

當我運行此查詢以查看PL/SQL Developer中可供用戶Scott使用的表時,我得到了包括表EMP在內的11個表。Oracle 11g錯誤:現有表上的Ora-00942

Select Table_Name 
From All_Tables 
Where Owner = 'SCOTT'; 

但是,當我嘗試訪問表EMP在PL/SQL Developer和全選這樣的:

select * from emp; 

我得到一個0ra 00942表或視圖不存在錯誤。但是,在同一個模式中的SQL * PLUS中,相同的select語句給了我表emp的內容。在PL/SQL Developer中導致這個錯誤的原因是什麼?

回答

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 
+0

感謝賈斯汀.....我登錄的用戶Scott,但如果我完全有資格的名字正如你所指出(SCOTT.EMP)效果很好。 – Victor 2013-04-07 20:19:56

+0

@Victor - 這強烈暗示你並沒有真正以SCOTT登錄。如果您發佈了「ALTER SESSION SET current_schema = some_other_schema」,那麼您可以作爲SCOTT登錄並且查詢需要完全限定的模式名稱。 – 2013-04-08 04:45:22