0

甲骨文 10g。我是程序新手,所以也许我遗漏了一些明显的东西。

模式所有者 ABC 有表 T2001_WRITEOFF。首先,我已将 SIUD 授予 some_update_role,并将该角色授予开发人员用户 IJK。用户 IJK 然后为 ABC.T2001_WRITEOFF 创建了同义词 T2001_WRITEOFF;这适用于普通的 SQL DML 命令。

但是,我在这里的其他地方读到,通过角色授予的权限在存储过程中不起作用。我从 IJK 中删除了同义词;然后从 ABC 直接将 SIUD 授予 IJK。从 IJK 开始,正常的 SQL DML 可以工作。

当我尝试如下创建一个简单过程时,它会抛出 PLS-00201 identifier 'T2001_WRITEOFF' must be declared,并指向第二行。无论我是否使用角色授予,此错误都是相同的。

create or replace procedure woof1(
    fooname in T2001_WRITEOFF.territory%TYPE,  <=== error points here
    bardesc IN T2001_WRITEOFF.ind_batch_submit%TYPE) IS
BEGIN
    INSERT into T2001_WRITEOFF
    VALUES ( fooname, bardesc);
END woof1;
/

提前感谢您的帮助

吉姆

4

1 回答 1

0

为了使角色权限适用于存储过程,您可能需要查看authid current_useroracle文档。也有帮助:http ://docs.oracle.com/cd/E11882_01/appdev.112/e25519/subprograms.htm#LNPLS682

于 2013-06-05T20:29:12.677 回答