Вы можете объединить таблицы по их первичному ключу (потому что вы не обновляли это, надеюсь!), А затем сравнить каждый столбец ... вам также придется проверять наличие нулей, и это сделает довольно многотипирование.Вы могли бы использовать all_tab_cols и немного sql для создания вашего запроса (напишите sql, который создает sql в качестве вывода)
На самом деле, подумав об этом, вы могли бы обойтись без меньшего набора текста, выполнив командуNatural объединяет таблицы вместе, чтобы получить набор строк, которые не изменились, и удаляет этот набор из исходного полного набора:
select * from original
Minus
select original.* from original natural inner join backup
Я никогда не делал этого, но теория заключается в том, что естественное объединение объединяет всеравные имена столбцов, поэтому каждый столбец каждой таблицы будет представлен в условии соединения.Это внутреннее соединение, поэтому будут представлены только те столбцы, которые не изменились.Любые столбцы, которые стали нулевыми или имеют значение, равное нулю, также исчезнут.Следовательно, это набор строк, которые не изменились.Если все, что вам нужно, это подсчет, сделайте подсчет исходной таблицы за вычетом результата этого соединения.Если вы хотите узнать, какие строки изменились, сделайте результирующий набор минус.
В идеале вы не должны этого делать;вместо этого в момент запуска обновления запишите количество строк, на которые оно повлияло.Тем не менее, эту технику можно использовать задолго до того, как будет выполнено обновление (но до запуска какого-либо другого обновления)