存储过程执行立即语句需要权限


create PROCEDURE p_test
Authid Current_User
as
begin
BEGIN
          EXECUTE IMMEDIATE 'DROP SEQUENCE IRP_INV_BALITPF_DETAIL_SEQ';
EXECUTE IMMEDIATE'
        CREATE SEQUENCE IRP_INV_BALITPF_DETAIL_SEQ MINVALUE 1 MAXVALUE 999 START WITH 1 INCREMENT BY 1 NOCACHE';
END;  
end;
oracle对存储过程在编译阶段进行权限检测,数据库检测存储过程的所有者是否拥有直接赋予的权限,而不是通过一个角色等间接赋予的权限。也就是说你即使是DBA权限,如果你不是直接grant的而是通过role来的那也是会报错说你没得权限。如果加上这个
Authid Current_User
就没有问题,要么就grant吧

原文地址:https://www.cnblogs.com/ziq711/p/8072346.html