2013-07-13 5 views

Odpowiedz

14

Po upuszczeniu obiektu wszystko, co z nim jest związane, również zostanie upuszczone, w tym uprawnienia. Nie dotyczy 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> 
+0

Może być źle, ale czy utrzymana jest również historia audytu? – Rob

4

Wierzę, że jeśli zastąpić funkcję, przywileje pozostać nienaruszone, chociaż zazwyczaj lubią tworzyć synonimy publicznych i przywilejów dotacje do tych.

The docs say:

REPLACE jest opcjonalnym kluczowe użyte w definicji obiektów (DDL) do ręcznym starszego definicji Objet z nowym. Zachowuje on uprawnienia dostępu do obiektu w trakcie procesu modyfikacji definicji . Jeśli obiekt zostanie upuszczony i odtworzony, jego uprawnienia zostaną utracone.

Powiązane problemy