Oracle:跨模式创建视图?

chr*_*ris 5 oracle schema view

我正在尝试创建一个视图,并将问题提炼为无法创建引用来自不同模式的表的视图.

例如,我可以这样做:

select count(*) from otherschema.othertable;
Run Code Online (Sandbox Code Playgroud)

我能做到:

create view foo as select count(*) as bar from oneofmytables;
Run Code Online (Sandbox Code Playgroud)

但如果我尝试:

create view foo as select count(*) as bar from otherschema.othertable;
Run Code Online (Sandbox Code Playgroud)

我收到"权限不足"错误.我需要什么额外的特权?

Jus*_*ave 8

您是否直接向其他用户的表格授予费用?还是通过一个角色?您需要直接授予权限才能创建引用其他表的对象(视图,过程等).作为快速测试,在SQL*Plus中

SQL> set role none;
SQL> select count(*) from otherschema.othertable;
Run Code Online (Sandbox Code Playgroud)

如果失败,那么问题是您已通过角色授予表权限.


Ren*_*ger 5

我猜你已经otherschema.othertable通过一个role不通过直接给出了选择权grant.

如果是这种情况,你应该连接as otheruser然后做一个grant select on othertable to <your-schema>.