【发布时间】:2013-06-05 20:24:49
【问题描述】:
甲骨文 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;
/
提前感谢您的帮助
吉姆R
【问题讨论】:
-
如果您删除了同义词
T2001_WRITEOFF.territory%TYPE将不起作用。请改用ABC.T2001_WRITEOFF.territory%TYPE。 -
不,抱歉,结果相同。
标签: oracle stored-procedures plsql