Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用另一个架构中的表创建存储过程PLS-00201_Oracle_Stored Procedures_Plsql - Fatal编程技术网

Oracle 使用另一个架构中的表创建存储过程PLS-00201

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工作 当我尝试创建一个如下的

甲骨文10g。我是新手,所以我可能错过了一些明显的东西

架构所有者ABC具有表T2001_WRITEOFF。首先,我将SIUD授予了某个更新角色,并将该角色授予了开发人员用户IJK。然后,用户IJK为ABC.T2001_WRITEOFF创建了同义词T2001_WRITEOFF;这适用于普通的SQLDML命令

但是,我在这里的其他地方读到,通过角色进行的授权在存储过程中不起作用。我放弃了IJK的同义词;然后从ABC直接授予IJK SIUD。在IJK中,正常的sqldml工作

当我尝试创建一个如下的简单过程时,它抛出PLS-00201标识符“T2001_WRITEOFF”必须声明,并指向第2行。无论是否使用角色授权,此错误都是相同的

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,但两者都产生了相同的错误。