在执行包内的过程时,即使已授予适当的访问权限,我也没有获得足够的权限错误。
CREATE OR REPLACE PACKAGE DEVELOPER.DDL_PACKS
AS
PROCEDURE disbcons
AS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE TESTER.ADDRESS DISABLE CONSTRAINT PK4';
END;
END;
GRANT ALTER ON TESTER.ADDRESS TO DEVELOPER;
EXEC developer.ddl.disbcons
修改
我尝试在包标头中添加AUTHID DEFINER
。但是在使用ORA-01031:insufficient privileges
执行时仍然出现DEVELOPER
错误。用户
如果我添加AUTHID CURRENT_USER
并使用相同的DEVELOPER
用户执行,则执行效果很好。我不明白为什么oracle在使用AUTHID DEFINER
答案 0 :(得分:1)
@Vivek你只能在Package规范中添加AUTHID DEFINER / CURRENT_USER,我认为它会在那之后工作,下面是你的包规范应该是:
CREATE OR REPLACE PACKAGE DEVELOPER.DDL_PACKS AUTHID CURRENT_USER
AS
PROCEDURE disbcons;
END;