Rne*_*net 1 oracle permissions
我在一个创建视图的过程中有一个动态sql.如果我打印字符串并手动执行它,我就可以创建视图了.但是在该过程中,由于权限不足而抛出异常.我已经为用户授予了执行,创建,所有程序,但它仍然无效.有什么建议?
在内部包中,间接(通过角色)授予的权限被删除.您必须直接向帐户授予基础对象的必要权限; 例:
conn sys/sys@DB as sysdba
create user A identified by A;
grant connect, dba to A;
conn A/A@DB
create table test_tab(pk number);
conn sys/sys@DB as sysdba
create user B identified by B;
grant connect, dba to B;
conn B/B@DB
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;
Run Code Online (Sandbox Code Playgroud)
在这个例子中,你需要一个
grant select on A.test_tab to B;
Run Code Online (Sandbox Code Playgroud)
使其工作(无论您使用的是动态SQL还是静态SQL都没关系).
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |