包含alter table的Oracle过程抛出ORA-01031:权限不足

时间:2017-08-14 18:02:47

标签: oracle stored-procedures plsql

在执行包内的过程时,即使已授予适当的访问权限,我也没有获得足够的权限错误。

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

执行时不考虑相关访问权限

1 个答案:

答案 0 :(得分:1)

@Vivek你只能在Package规范中添加AUTHID DEFINER / CURRENT_USER,我认为它会在那之后工作,下面是你的包规范应该是:

CREATE OR REPLACE PACKAGE DEVELOPER.DDL_PACKS AUTHID CURRENT_USER
AS

   PROCEDURE disbcons;

END;