我试图找出一种方法来计算Oracle视图中的列数。关于如何计算表中的列数,有很多答案,而对于视图则没有答案。
数据库有很多视图,我必须为每个视图计数。以我可以重复执行的查询的形式找到解决方案将是最有效的-手工计数在这里不起作用。
感谢您提供的任何帮助!
答案 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_cols
或all_tab_cols
中。 (当前用户拥有的对象也有user_views
和user_tab_cols
。)
您需要一个连接或一个IN
或EXISTS
子句,因为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;