Как посчитать количество столбцов в представлении?- Oracle SQL - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь найти способ подсчитать количество столбцов в представлении в Oracle.Есть много ответов о том, как посчитать количество столбцов в таблице, но ни одного для представлений.

База данных имеет много, много просмотров, и я должен рассчитывать для каждого.Было бы наиболее эффективно найти решение в виде запроса, который я могу неоднократно выполнить - подсчет рук здесь не сработает.

Спасибо за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Представления в dba_views для всех представлений в базе данных или в all_views для всех представлений, к которым имеет доступ текущий пользователь.Столбцы в dba_tab_cols или all_tab_cols.(Также есть user_views и user_tab_cols для объектов, принадлежащих текущему пользователю.)

Вам необходимо объединение или предложение IN или EXISTS, поскольку xxx_tab_cols views don 't содержит только столбцы представления, но также и столбцы таблицы.

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;
0 голосов
/ 28 января 2019
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'
...