Oracle 必须声明过程ie标识符中的DBMS_锁抛出错误
当我执行dbms_lock.sleep时,它会成功运行。但是,当我将它放入一个过程中时,它会抛出类似“identifier”的错误,必须声明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;
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原因,我无法联系数据库管理员