我正在尝试编写一小段非睡眠的PL / SQL。
以下在sqldeveloper中工作
begin dbms_lock.sleep(5); end;
但(作为相同的用户),我不能做到以下几点:
create or replace procedure sleep(seconds in number) is begin dbms_lock.sleep(seconds); end;
没有错误“identifer”DBMS_LOCK“必须声明…有趣,因为我可以运行它没有一个过程。
同样奇怪的是,当我以DBA身份login时,我可以运行该命令
grant exec on dbms_lock to public;
我得到了
ERROR at line 1: ORA-00990: missing or invalid privilege
这是Oracle版本“Oracle数据库11g快速版发布11.2.0.2.0 – 64位生产”
[richard@f1 ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.2.0 Production on Fri Sep 14 13:33:18 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> connect sys@xe as sysdba Enter password: ****** Connected. SQL> grant execute on sys.dbms_lock to richard; Grant succeeded.
根据http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9013.htm
GRANT EXECUTE ON "object" TO PUBLIC;
要创build独立的过程或function,或者包装规格或正文,您必须满足以下先决条件:
注意 :要创build没有错误,即成功编译过程或包,需要以下附加特权:过程或包的所有者必须已被明确授予对代码体内引用的所有对象的必要对象特权; 所有者不能通过angular色获得所需的权限。