如何计算视图中的列数? -Oracle SQL

时间:2019-01-28 20:36:59

标签: sql oracle sql-view

我试图找出一种方法来计算Oracle视图中的列数。关于如何计算表中的列数,有很多答案,而对于视图则没有答案。

数据库有很多视图,我必须为每个视图计数。以我可以重复执行的查询的形式找到解决方案将是最有效的-手工计数在这里不起作用。

感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:3)

SELECT
      table_name,
      column_name,
      data_type
 FROM all_tab_columns
WHERE table_name = 'VIEWNAME'
  AND owner      = 'OWNER'
ORDER BY column_id;

计数

SELECT
  count(*) columnCount
FROM all_tab_columns
WHERE table_name = 'VIEWNAME'
  AND owner      = 'OWNER'

答案 1 :(得分:1)

对于数据库中的所有视图,视图位于dba_views中,对于当前用户可以访问的所有视图,视图位于all_views中。列位于dba_tab_colsall_tab_cols中。 (当前用户拥有的对象也有user_viewsuser_tab_cols。)

您需要一个连接或一个INEXISTS子句,因为xxx_tab_cols视图不仅包含视图列,而且还包含表列。

select owner, table_name as view_name, count(*)
from dba_tab_columns
where (owner, table_name) in (select owner, view_name from dba_views)
group by owner, table_name
order by owner, view_name;