簡體   English   中英

跨用戶的過程中出現Oracle PLS-00201錯誤

[英]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_DETAILWEBUSER擁有)來引用APPUSER擁有的APPUSER ,則需要為這些對象授予WEBUSER特權。 例如,以APPUSER

GRANT SELECT ON appuser.details
   TO webuser;

這假定WEBUSER只需要從APPUSER.DETAILS表中進行SELECT 如果您的過程需要對該表中的INSERTUPDATEDELETE數據進行操作,則需要為WEBUSER授予APPUSER.DETAILS表其他特權。 您需要為WEBUSER用戶需要引用的APPUSER中的每個表進行類似的授予。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM