When an object is dropped, all objects associated with it are also dropped, including privileges. This does not apply to CREATE OR REPLACE.
SQL> create procedure p1 is 2 begin 3 null; 4 end; 5 / Procedure created. SQL> grant execute on p1 to xyz; Grant succeeded. SQL> select * from user_tab_privs_made 2 / GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- --- XYZ P1 APC EXECUTE NO NO SQL> create or replace procedure p1 is 2 n pls_integer; 3 begin 4 n := 1; 5 end; 6 / Procedure created. SQL> select * from user_tab_privs_made 2 / GRANTEE TABLE_NAME GRANTOR PRIVILEGE GRA HIE ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- --- XYZ P1 APC EXECUTE NO NO SQL> drop procedure p1; Procedure dropped. SQL> create or replace procedure p1 (p in out pls_integer) is 2 begin 3 p := p+1; 4 end; 5 / Procedure created. SQL> select * from user_tab_privs_made 2 / no rows selected SQL>
source share