ORA-00942: 表或視圖不存在解決方案

來源:互聯網
上載者:User

標籤:ace   tab   for   min   許可權   div   error   舉例   方便   

ORA-00942: 表或視圖不存在是比較常見的問題,原因也多種多樣。今天碰到了這個問題,從網上搜到了很多解決方案,在此做一個整理。僅做為記錄方便以後查閱。

1、表或視圖確實不存在或名稱寫錯

2、表名大小寫

Oracle對大小寫敏感,通常在建立和查詢時對名稱資料庫會自動轉為大寫,但語句中有引號時會按引號中的內容保留。例如:

create table "TableName"  (   "col1"        VARCHAR2(2),   "col2"        DATE);

這時查詢語句也要相應改成

select * from  "TableName";

3、許可權問題導致

平時所做的對其它使用者下資源的操作許可權有些是通過角色授權的,但在預存程序、函數、觸發器不能直接使用,需要單獨授權。授權語句舉例:

grant select on sys.XXX TO XXX;

4、需要在預存程序中使用role許可權(這個我沒太看懂,以下代碼部分為粘貼,來自http://www.cnblogs.com/jzbml/p/5991918.html)

SQL> select * from dba_role_privs where grantee=‘SUK‘;   GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE  ------------ ------------ ------------ ------------  SUK DBA NO YES  SUK CONNECT NO YES  SUK RESOURCE NO YES   --使用者SUK擁有DBA這個role   --再建立一個測試預存程序:  create or replace procedure p_create_table    is  begin  Execute Immediate ‘create table create_table(id int)‘;  end p_create_table;   --然後測試  SQL> exec p_create_table;   begin p_create_table; end;   ORA-01031: 許可權不足  ORA-06512: 在"SUK.P_CREATE_TABLE", line 3  ORA-06512: 在line 1   --可以看到,即使擁有DBA role,也不能建立表。role在預存程序中不可用。  --遇到這種情況,我們一般需要顯式進行系統許可權,如grant create table to suk;  --但這種方法太麻煩,有時候可能需要進行非常多的授權才能執行預存程序  --實際上,oracle給我們提供了在預存程序中使用role許可權的方法:  --修改預存程序,加入Authid Current_User時預存程序可以使用role許可權。  create or replace procedure p_create_table    Authid Current_User is  begin  Execute Immediate ‘create table create_table(id int)‘;  end p_create_table;   --再嘗試執行:  SQL> exec p_create_table;   PL/SQL procedure successfully completed   --已經可以執行了。

我在我遇到的問題中試了這個方法,得到以下結果:

Compilation errors for PACKAGE BODY XXX.XXXXError: PLS-00157: AUTHID 只允許在方案級程式中使用Line: xxxxText: PRM_ERRORMSG OUT VARCHAR2) Authid Current_User IS

 

目前瞭解到的就是這些,有其它解決方案繼續更新。

 

ORA-00942: 表或視圖不存在解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.