测试将权限直接赋予存储过程或者函数
16:40:34 SQL> create or replace procedure pdbadmin.proc_t_1
as
total_amount number;
begin
select count(*) into total_amount from pdbadmin.t_1;
dbms_output.put_line('the total number of rows in pdbadmin.t_1 is:'||total_amount);
end;
/
因为这个用户没有读t_1表的row的权限,所以出来的结果为零
16:42:29 SQL> set serveroutput on
16:42:37 SQL> exec proc_t_1;
the total number of rows in pdbadmin.t_1 is:0
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
16:45:18 SQL> exec sa_user_admin.set_prog_privs(policy_name=>'policy_hr',schema_name=>'pdbadmin',program_unit_name=>'proc_t_1',privileges=>'read');
PL/SQL procedure successfully completed.
经过赋予read权限后,现在再次 执行就会读取这个表的所有行
16:42:41 SQL> exec proc_t_1;
the total number of rows in pdbadmin.t_1 is:2347
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.05