ORA-00942 on view containing ANSI join

  • From: Neil Kodner <nkodner@xxxxxxxxx>
  • To: oracle-l-freelists <oracle-l@xxxxxxxxxxxxx>
  • Date: Wed, 9 Dec 2009 17:25:09 -0500

Version 10.2.0.4

User A owns a handful of tables, User B has select privileges on the tables
through both PUBLIC and role SELRAWEREP.  User B contains no synonyms to any
of User As tables or views.  It is confirmed that User B can query the
necessary tables when qualifying with the table owner.

User A creates a somewhat complex view (view 1) with a few nested
subqueries, ANSI-style-outer-joined to the other tables in the view's FROM
clause.  User A then grants select on the view to both User B directly, and
to SELRAWEREP.  User B tries to select from the view and receives ORA-00942.


I then create a new version of the view and fully-qualify each table name
with the table owner(view 2).  User B can query the view just fine.

I remove the references to the table owner and then rework the ANSI
Outer-join to a standard Oracle-style inner join.(view 3).  User B can query
that view just fine.

I then create view4 which is a copy of view 3 but outerjoining the subquery,
which matches the intent of the original view.  User B is back to receiving
ORA-00942 when trying to query it.

Finally, I modify the original view and change the ANSI outer join into an
ANSI equi-join, user B still gets ORA-00942.


My views may be found at http://www.neilkodner.com/views.txt

I can't find the documentation that explains what's going on here.  I can't
tell if this is an outer-join issue, an issue with combining ANSI-style
joins with traditional Oracle joins, or something else.  Does anyone have an
idea, or can at least cite the documentation that explains all of this?

Other related posts: