+1  A: 

There isn't a way, because the definition of each view column is an expression, not (in general) merely a table column. For example, your view's SQL could be:

SELECT 
   UPPER(ENAME) || 'xxx',
   myfunction(DNAME)
FROM
   emp a,
   dept b
WHERE
   a.deptno= b.deptno

or perhaps

SELECT ename || 'xxx', dname
FROM (
  SELECT 
     UPPER(ENAME) AS ename,
     myfunction(DNAME) AS dname
  FROM
     emp a,
     dept b
  WHERE
     a.deptno= b.deptno
)

What would you expect to see for the "underlying columns" in this example?

Tony Andrews
True (and I was aware of this). In this case it should just return nothing because its an expression.
VinceJS
It would be nice if some dependencies query would return emp.ename and dept.dname, making it easier to identify where changes to the underlying table/column would affect a view/procedure/etc.... but TOAD provides a lot of that information on the "used by" tab, so at least it's easy to check manually.
Mark Baker
A: 

The sql that defined the view can be found in all_views

set long 9999 
select TEXT from all_views where VIEW_NAME='MYVIEW';

This is the only way to get at the underlying tables and columns.

jim mcnamara
+1  A: 

In 11g Oracle introduced finer grained dependency tracking. So the database knows which table columns a view or package body depends on. However, they don't seem to have exposed this data in a view. But there may be x$ tables with the info.

APC
A: 

The linked procedures may be of some help for identifying dependencies

The DBA_DEPENDENCIES View will give you a list of the tables that a View is based on:

SELECT *
  FROM DBA_DEPENDENCIES
 WHERE OWNER = <Schema>
   AND NAME = <View_Name>
   AND TYPE = 'VIEW'
Mark Baker