Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle concede permissão para execução


Dentro dos pacotes, os privilégios concedidos indiretamente (por meio de uma função) são descartados. Você deve conceder os privilégios necessários nos objetos subjacentes diretamente na conta; exemplo:
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;

Neste exemplo, você precisa de um
grant select on A.test_tab to B;

para fazê-lo funcionar (não importa se você está usando SQL dinâmico ou estático).