ストアドプロシージャはサブユーザーに許可されています

独自のストアドプロシージャを他のユーザーに許可します(ユーザー名:USER_OHTER)

-ストアドプロシージャケース(空のテーブルデータ)

--存储过程案例(清空表数据)
CREATE OR REPLACE PACKAGE USER_A.PKG_TRA_TAB_OPERATION IS
  PROCEDURE P_TAB_TRUNCATE_A; -- 方法一
  PROCEDURE P_TAB_TRUNCATE_B; -- 方法二
END PKG_TRA_TAB_OPERATION;
/
CREATE OR REPLACE PACKAGE BODY USER_A.PKG_TRA_TAB_OPERATION IS
  
  PROCEDURE P_TAB_TRUNCATE_A IS
      BEGIN
        EXECUTE IMMEDIATE 'TRUNCATE TABLE T_TAB_A';
      EXCEPTION
        WHEN OTHERS THEN
          RAISE_APPLICATION_ERROR(-20001, 'TRUNCATE TABLE ERROR');
  END P_TAB_TRUNCATE_A;

  PROCEDURE P_TAB_TRUNCATE_B IS
      BEGIN
        EXECUTE IMMEDIATE 'TRUNCATE TABLE T_TAB_B';
      EXCEPTION
        WHEN OTHERS THEN
          RAISE_APPLICATION_ERROR(-20001, 'TRUNCATE TABLE ERROR');
  END P_TAB_TRUNCATE_B;
  
END PKG_TRA_TAB_OPERATION;
/

他のユーザーを承認します(USER_OHTER): 

grant execute on PKG_TRA_TAB_OPERATION to USER_OHTER;

他のユーザー(USER_OHTER)から呼び出されました:

--========================== 表清空(谨慎操作)USER_OHTER 执行 =======================================

--TRUNCATE TABLE T_TAB_A
BEGIN 
    USER_A.PKG_TRA_TAB_OPERATION.P_TAB_TRUNCATE_A;
end;

--TRUNCATE TABLE T_TAB_B
BEGIN 
    USER_A.PKG_TRA_TAB_OPERATION.P_TAB_TRUNCATE_B;
end;

 

おすすめ

転載: blog.csdn.net/qq_36521848/article/details/106580533