现在我在统计VIEW里面的字段,但是遇到一个问题,就是无法将VIEW里面的全部字段通过一条SQL语句返回。
我用的方法是:
select 
 a.COLUMN_NAME, 
 decode(a.DATA_TYPE,'NUMBER',(to_char(a.DATA_TYPE)||'('||to_char(a.DATA_PRECISION)||'$'||to_char(a.DATA_SCALE)||')'),(to_char(a.DATA_TYPE)||'('||to_char(a.CHAR_LENGTH)||')')) 
from 
 user_tab_columns a 
where
 a.TABLE_NAME = 'view_name'
但是如果遇到UNION情况,好像只能返回第一个UNION之前的字段信息。大家能否帮帮我,看能否用一条SQL,可以将VIEW里面用到的TABLE以及每个TABLE里面用到的字段都取到。

解决方案 »

  1.   

    视图中显示的字段, 是以union前的第一个完整的SQL的字段别名或字段名为准的, union 之后的字段,取什么别名都不会反映杂视图上, 所以你这种情况是正常的. 如果你想显示其他的字段名, 那就在第一个SQL中写上别名.
      

  2.   

    to:dinaya2003
    >那就在第一个SQL中写上别名.每一个UNION的表,都要用别名区分。并且字段前面也要加上别名,才能让oracle区别他们,将全部的UNION的表的列信息都反映到user_tab_columns表?