Oracle 使用另一个架构中的表创建存储过程PLS-00201
甲骨文10g。我是新手,所以我可能错过了一些明显的东西 架构所有者ABC具有表T2001_WRITEOFF。首先,我将SIUD授予了某个更新角色,并将该角色授予了开发人员用户IJK。然后,用户IJK为ABC.T2001_WRITEOFF创建了同义词T2001_WRITEOFF;这适用于普通的SQLDML命令 但是,我在这里的其他地方读到,通过角色进行的授权在存储过程中不起作用。我放弃了IJK的同义词;然后从ABC直接授予IJK SIUD。在IJK中,正常的sqldml工作 当我尝试创建一个如下的简单过程时,它抛出PLS-00201标识符“T2001_WRITEOFF”必须声明,并指向第2行。无论是否使用角色授权,此错误都是相同的Oracle 使用另一个架构中的表创建存储过程PLS-00201,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,甲骨文10g。我是新手,所以我可能错过了一些明显的东西 架构所有者ABC具有表T2001_WRITEOFF。首先,我将SIUD授予了某个更新角色,并将该角色授予了开发人员用户IJK。然后,用户IJK为ABC.T2001_WRITEOFF创建了同义词T2001_WRITEOFF;这适用于普通的SQLDML命令 但是,我在这里的其他地方读到,通过角色进行的授权在存储过程中不起作用。我放弃了IJK的同义词;然后从ABC直接授予IJK SIUD。在IJK中,正常的sqldml工作 当我尝试创建一个如下的
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;
/
创建或替换过程1(
T2001\u WRITEOFF.territory%类型中的fooname,为了使角色权限适用于存储过程,您可能需要查看中的authid current\u user
。也很有帮助:如果您删除了同义词T2001\u WRITEOFF.territory%类型
将不起作用。请尝试ABC.T2001\u WRITEOFF.territeoff.territory%类型
rry,结果相同。不,抱歉,尝试了authid current_user和authid definer,但两者都产生了相同的错误。