Я пытаюсь выполнить запрос к базе данных oracle, чтобы определить количество записей в каждой таблице. Я наматывается результат следующего запроса к SQL файла:select count (*) from table_name возвращает ошибку
select 'select count(*) '||table_name||';' from dba_tables;
Это создало SQL файл формата
select count(*) from Table_Name1;
select count(*) from Table_Name2;
etc
Я тогда намотан вывод выполнения этого SQL-файл, однако он только вернулся отсчет для некоторых таблиц, для других таблиц он просто говорит:
«Эта таблица или представление не существует»
Как это может быть, если я только что заполнил этот список имен таблиц автоматически из базы данных?
Конечная цель этого упражнения - иметь файл с количеством всех полей в каждой таблице, а затем внести изменения в программу с использованием этой базы данных и снова запустить ту же операцию в новый файл и сравнить 2 так что я вижу, какие таблицы меняются, когда я вношу изменения в программу.
Что касается вашего конца цель, а не ошибка, которую вы получаете, [@ a_horse_with_name's XML magic trick] (http://stackoverflow.com/a/10705088/266304) довольно изящна. –
Столбец 'NUM_ROWS' в таблице' DBA_TABLES' содержит количество строк. Но сначала вам нужно собрать статистику. – Dmitry
Видимо, не проблема, которую вы имели, но для кого-то еще, также может быть DBA_TABLES показывает все таблицы, независимо от того, имеете ли вы к ним доступ или нет. Таким образом, можно включить таблицу, которая будет ошибочной при попытке получить доступ. ALL_TABLES ограничивает результаты таблицами, которые вы имеете для просмотра. –