DBMS/Oracle

다른 유저가 truncate할때(프로시저)

itexit 2022. 7. 4. 10:51
반응형

다른 유저에게 테이블 tuuncate 권한 부여하고자 할때

아래 프로시저를 생성하여 프로시져를 실행권한을 주면 다른 유저도 truncate를 할 수있다.

 

- 일반 table_truncate(다른 유저가 truncate할때) 
CREATE OR REPLACE PROCEDURE SCOTT.TABLE_TRUNCATE(tname in varchar2)
as
begin
execute immediate 'truncate table SCOTT.'||upper(tname);
end;
/
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO TRIGER;
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO HR;

기본적으로 다른 유저가 해당 유저 테이블을 truncate 할수없을때 프로시져로 처리

- patition table_truncate(다른 유저가 truncate할때) 
CREATE OR REPLACE PROCEDURE SCOTT.TRUNCATE_PARTITION(P_TNAME in varchar2,P_PNAME IN VARCHAR2) 
 AS 
  v_tname varchar2(40); 
  v_pttn_nm varchar2(40); 
 BEGIN 
    execute immediate 'ALTER TABLE SCOTT.'||UPPER(P_TNAME)||' TRUNCATE PARTITION '||UPPER(P_PNAME); 
 end;
/
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO TRIGER;
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO HR;

기본적으로 다른 유저가 해당 유저 테이블을 truncate 할수없을때 프로시져로 처리


- subpatition table_truncate(다른 유저가 truncate할때)
CREATE OR REPLACE PROCEDURE SCOTT.TRUNCATE_SUBPARTITION(P_TNAME in varchar2,P_PNAME IN VARCHAR2) 
 AS 
  v_tname varchar2(40); 
  v_pttn_nm varchar2(40); 
 BEGIN 
    execute immediate 'ALTER TABLE SCOTT.'||UPPER(P_TNAME)||' TRUNCATE SUBPARTITION '||UPPER(P_PNAME); 
 end;
/
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO TRIGER;
GRANT EXECUTE ON SCOTT.TABLE_TRUNCATE TO HR;

기본적으로 다른 유저가 해당 유저 테이블을 truncate 할수없을때 프로시져로 처리