Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 必须声明过程ie标识符中的DBMS_锁抛出错误_Oracle_Plsql - Fatal编程技术网

Oracle 必须声明过程ie标识符中的DBMS_锁抛出错误

Oracle 必须声明过程ie标识符中的DBMS_锁抛出错误,oracle,plsql,Oracle,Plsql,当我执行dbms_lock.sleep时,它会成功运行。但是,当我将它放入一个过程中时,它会抛出类似“identifier”的错误,必须声明DBMS_锁 exec dbms_lock.sleep ( 5 ); -- this is working create procedure p1 ... dbms_lock.sleep ( 5 ); -- Error(264,2): PLS-00201: identifier 'DBMS_LOCK' must be declared ... end;

当我执行dbms_lock.sleep时,它会成功运行。但是,当我将它放入一个过程中时,它会抛出类似“identifier”的错误,必须声明DBMS_锁

exec dbms_lock.sleep ( 5 ); -- this is working 

create procedure p1
...
dbms_lock.sleep ( 5 ); -- Error(264,2): PLS-00201: identifier 'DBMS_LOCK' must be declared
...
end;
/
以下是来自dba_对象的内容:

SYS     DBMS_LOCK   PACKAGE BODY
SYS     DBMS_LOCK   PACKAGE
PUBLIC  DBMS_LOCK   SYNONYM
SYS     DBMS_OUTPUT PACKAGE
PUBLIC  DBMS_OUTPUT SYNONYM
SYS     DBMS_OUTPUT PACKAGE BODY

通过角色获得的权限在PL/SQL块内无效。包上的执行权限需要直接授予用户,例如:

grant execute on dbms_lock to your_oracle_user;

请注意,您仍然需要有足够的权限来执行grant execute,在我的情况下,我有ORA-01031:权限不足,并且由于xxx原因,我无法联系数据库管理员