1. 程式人生 > >oracle中實現某個用戶truncate 其它用戶下的表

oracle中實現某個用戶truncate 其它用戶下的表

oracl 現在 兩個 想要 grant 權限 begin te pro 第一個

oracle文檔中對truncate權限的要求是需要某表在當前登錄的用戶下,或者當前登錄的用戶有drop any table的權限。

但是如果不滿足第一個條件的情況下,要讓某用戶滿足第二個條件就導致權限過大了。

參考網上的討論,可以使用存儲過程來時間。

例如有兩個用戶 u1,u2,u1下有表 test1a

現在想要實現u2能 truncate u1下的表 test1a。

可以使用用戶u1創建存儲過程,

create procedure u1.stgtruncate(table_name in varchar2) as
begin
execute immediate ‘truncate table ‘||table_name;

end;

然後將該存儲過程的權限賦予u2,

grant execute on u1.stgtruncate to u2;

現在登錄u2,通過執行如下sql即可truncate u1下的表test1a

call u1.stgtruncate(‘test1a‘);

以上。

oracle中實現某個用戶truncate 其它用戶下的表