你把V1和V2视图名字前加上用户名呢? select * from a.v1; select * from b.v2;
select * from a.v1; select * from a.v2;
但是你的问题也挺奇怪的如果赋权语句没错误的话,应该不会出现的问题。。 你可以这样测试下 select * from all_views where view_name='V2' and owner='A'; 使用b用户登陆,查看下上面的查询有没有记录 如果有记录,你这个可以向oracle公司提bug了, 如果没有肯定你的授权有问题。用A用户登陆 执行 grant all on v2 to b; 然后使用b登陆,执行你的操作。。 best wishes...
A帐号下 grant all on v1 to b grant all on v2 to b你在试试视图中的基表授权看看
对的,你得贴出你的SQL语句出来,不然怎么知道哪里出的问题!
完整代码如下:create or replace view v_maindata as select distinct pro.fphase, ph.fname, ma.fieopclassid, cl.fieopclasschname fclassname, ma.fieopprocessid, cp.fieopprocesschname fprocessname, ma.fprodid, pro.fprodname, pro.fmodelid, pro.fpcnbomid, pro.fseasonyear, ma.fieoutsole, pro.fmtlverno, pro.fclrverno, pr.fstylecode || '-' || pr.fcolorcode || '-00' fstylecolorcode, ma.fieopengid, ma.ffctycomb, ma.fverno, ma.fdesc, ma.fdesclocal, ma.fpartname fpartid, tp.fstdpartnamech fpartname, ma.fneed_zcl, ma.fprocess_tot, ma.fbase_tot, ma.fneedrs_tot, ma.fslc_s, ma.fbasemd_tot, ma.fbasems_tot, ma.fallowance, ma.fworking_hour, ma.fsuggestmanpower, ma.ftakttime, ma.fshift, ma.fdayforlearningcurve, ma.fusermemo, ma.fmachinereqmemo, ma.fmanpoweroverratio, ma.fdaythroughput, ma.fneedsynco, ma.fdatastatusid, ts.fdatastatusdescch fdatastatus, ma.f, ma.fneedcalculateforsfc, ma.fbuilder, ma.fbdate, ma.freviser, ma.frdate, ma.freleasedate, ma.freleaser, ma.ftransferdate, ma.ftransfer from tblieopengmaster ma left join tblproductlastrel pr on pr.fprodid=ma.fprodid left join (select pr.fprodid, pr.fstylecode, pr.fcolorcode, p.fphase, p.fprodname, p.fseasonyear, p.fmtlverno, p.fclrverno, p.fmodelid, p.fpcnbomid from tblproductlastrel pr left join tblproduct p on pr.fprodid=p.fprodid) pro on pro.fprodid=ma.fprodid left join tblphase ph on pro.fphase=ph.fphase left join tblieopclass cl on ma.fieopclassid=cl.fieopclassid left join tblieopclassprocess cp on ma.fieopclassid=cp.fieopclassid and ma.fieopprocessid=cp.fieopprocessid left join tblstdpart tp on to_char(tp.fstdpartid)=ma.fpartname left join tbldatastatus ts on ts.fdatastatusid=ma.fdatastatusid where pr.fstylecode is not null and ma.fdatastatusid<>5 如果将此段代码的Select后面的语句改成 select * from tablename (其它简单的查询). 那么就不存在上面的问题. 但以上视图编译可以通过,并在本帐号下可以查询此视图. 依上看,是否视图的写法上有问题? 还请各位给点意见.谢谢
用a登录
grant select on v2 to b
select * from a.v1;
select * from b.v2;
select * from a.v2;
你可以这样测试下
select * from all_views where view_name='V2' and owner='A';
使用b用户登陆,查看下上面的查询有没有记录
如果有记录,你这个可以向oracle公司提bug了,
如果没有肯定你的授权有问题。用A用户登陆
执行
grant all on v2 to b;
然后使用b登陆,执行你的操作。。
best wishes...
grant all on v1 to b
grant all on v2 to b你在试试视图中的基表授权看看
select distinct pro.fphase, ph.fname, ma.fieopclassid, cl.fieopclasschname fclassname,
ma.fieopprocessid, cp.fieopprocesschname fprocessname, ma.fprodid, pro.fprodname,
pro.fmodelid, pro.fpcnbomid, pro.fseasonyear, ma.fieoutsole, pro.fmtlverno, pro.fclrverno,
pr.fstylecode || '-' || pr.fcolorcode || '-00' fstylecolorcode,
ma.fieopengid, ma.ffctycomb, ma.fverno, ma.fdesc, ma.fdesclocal, ma.fpartname fpartid, tp.fstdpartnamech fpartname,
ma.fneed_zcl, ma.fprocess_tot, ma.fbase_tot, ma.fneedrs_tot, ma.fslc_s, ma.fbasemd_tot,
ma.fbasems_tot, ma.fallowance, ma.fworking_hour, ma.fsuggestmanpower, ma.ftakttime, ma.fshift,
ma.fdayforlearningcurve, ma.fusermemo, ma.fmachinereqmemo, ma.fmanpoweroverratio, ma.fdaythroughput,
ma.fneedsynco, ma.fdatastatusid, ts.fdatastatusdescch fdatastatus, ma.f, ma.fneedcalculateforsfc,
ma.fbuilder, ma.fbdate, ma.freviser, ma.frdate, ma.freleasedate, ma.freleaser, ma.ftransferdate, ma.ftransfer
from tblieopengmaster ma
left join tblproductlastrel pr on pr.fprodid=ma.fprodid
left join (select pr.fprodid, pr.fstylecode, pr.fcolorcode, p.fphase,
p.fprodname, p.fseasonyear, p.fmtlverno, p.fclrverno,
p.fmodelid, p.fpcnbomid
from tblproductlastrel pr
left join tblproduct p on pr.fprodid=p.fprodid) pro on pro.fprodid=ma.fprodid
left join tblphase ph on pro.fphase=ph.fphase
left join tblieopclass cl on ma.fieopclassid=cl.fieopclassid
left join tblieopclassprocess cp on ma.fieopclassid=cp.fieopclassid and ma.fieopprocessid=cp.fieopprocessid
left join tblstdpart tp on to_char(tp.fstdpartid)=ma.fpartname
left join tbldatastatus ts on ts.fdatastatusid=ma.fdatastatusid
where pr.fstylecode is not null and ma.fdatastatusid<>5
如果将此段代码的Select后面的语句改成 select * from tablename (其它简单的查询). 那么就不存在上面的问题. 但以上视图编译可以通过,并在本帐号下可以查询此视图. 依上看,是否视图的写法上有问题? 还请各位给点意见.谢谢
你的查询语句是否加了schema前缀