पैकेज के अंदर, अप्रत्यक्ष रूप से (भूमिका के माध्यम से) दिए गए विशेषाधिकार हटा दिए जाते हैं। आपको अंतर्निहित वस्तुओं पर . आवश्यक विशेषाधिकार प्रदान करने होंगे सीधे खाते में; उदाहरण:
conn sys/[email protected] as sysdba
create user A identified by A;
grant connect, dba to A;
conn A/[email protected]
create table test_tab(pk number);
conn sys/[email protected] as sysdba
create user B identified by B;
grant connect, dba to B;
conn B/[email protected]
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;
इस उदाहरण में, आपको एक
. की आवश्यकता हैgrant select on A.test_tab to B;
इसे काम करने के लिए (इससे कोई फर्क नहीं पड़ता कि आप गतिशील या स्थिर SQL का उपयोग कर रहे हैं)।