Bên trong các gói, các đặc quyền được cấp gián tiếp (thông qua một vai trò) bị loại bỏ. Bạn phải cấp các đặc quyền cần thiết trên các đối tượng cơ bản vào tài khoản trực tiếp; ví dụ:
conn sys/example@sqldat.com as sysdba
create user A identified by A;
grant connect, dba to A;
conn A/example@sqldat.com
create table test_tab(pk number);
conn sys/example@sqldat.com as sysdba
create user B identified by B;
grant connect, dba to B;
conn B/example@sqldat.com
select * from A.test_tab; -- this works
create or replace procedure do_it as
l_cnt pls_integer;
begin
select count(*) into l_cnt from A.test_tab; -- error on compile
end;
Trong ví dụ này, bạn cần một
grant select on A.test_tab to B;
để làm cho nó hoạt động (không quan trọng bạn đang sử dụng SQL động hay tĩnh).