我有一个包,我需要在桌子上放锁。
我在主要proc的开头使用以下语句。
PROCEDURE proc_main IS
BEGIN
-- added by praphul to test locking
EXECUTE IMMEDIATE 'LOCK TABLE schema.XYZ IN EXCLUSIVE MODE NOWAIT';
获取以下错误:
SQL> exec ssss.abcd.proc_main();
BEGIN ssss.abcd.proc_main(); END;
*
ERROR at line 1:
ORA-20001: ERROR OCCURED AT STEP:500
REASON: abcd FAILED
SQLCODE: -1031
SYS-MSG: ORA-01031: insufficient privileges
ORA-06512: at "ssss.PROC_ERROR_RAISE", line 31
ORA-06512: at "ssss.abcd", line 156
ORA-06512: at line 1
答案 0 :(得分:1)
要成功锁定表,它必须位于您登录的同一模式中,或者您必须具有LOCK ANY TABLE权限,或者必须为相关表授予任何对象权限。显然,ssss
用户尚未在schema.XYZ
上被授予适当的权限。和你谈谈DBA。
祝你好运。