[英]Oracle PLS-00201 error in procedure across users
我有一個由內部應用程序和我們的網站共享的oracle數據庫。
我對oracle知之甚少,因此將解釋我的理解方式。
該數據庫具有兩個用戶APPUSER和WEBUSER(使用Oracle SQL Developer)作為APPUSER登錄時,您可以看到數據庫中的所有表。 以WEBUSER身份登錄時,除了幾個過程外,您看不到其他任何東西,APPUSER無法看到這些過程。
一個過程開始於:
create or replace PROCEDURE "UPDATE_DETAIL"
(v_ref IN APPUSER.DETAILS.REFERENCE%TYPE
,v_desc IN APPUSER.DETAILS.DESCRIPTION%TYPE
...
第2行帶有紅色的波浪形,帶“ PLS-00201:未聲明標識符APPUSER”
我相信它具有“ APPUSER.TABLE.COLUMN”,因為WEBUSER無法直接訪問表。
我已執行以GRANT ALL ON UPDATE_DETAIL TO APPUSER
以WEBUSER GRANT ALL ON UPDATE_DETAIL TO APPUSER
登錄,但這不能解決問題,WEBUSER是該過程的所有者,但Grants列表中未列出任何內容(我想是因為所有者只具有權利默認?)
該過程的“依賴項”列表也為空,但是找不到如何手動向其添加一個。
不知道還有什么可以嘗試解決此錯誤。
謝謝。
如果要讓WEBUSER
擁有的WEBUSER
(並且從您的描述中相信UPDATE_DETAIL
由WEBUSER
擁有)來引用APPUSER
擁有的APPUSER
,則需要為這些對象授予WEBUSER
特權。 例如,以APPUSER
GRANT SELECT ON appuser.details
TO webuser;
這假定WEBUSER
只需要從APPUSER.DETAILS
表中進行SELECT
。 如果您的過程需要對該表中的INSERT
, UPDATE
或DELETE
數據進行操作,則需要為WEBUSER
授予APPUSER.DETAILS
表其他特權。 您需要為WEBUSER
用戶需要引用的APPUSER
中的每個表進行類似的授予。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.