繁体   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