Я даже не знаю, если это возможно, - так что любая идея будет приветствоваться:Определение различий в 2 ряда 2 таблицы на основе значений столбцов (без предварительного знания имен столбцов)
Я хочу функцию, которая будет возвращает строку (varchar2
) представление различий в значениях столбцов из 2 конкретных таблиц.
Так что это задача будет
разности находят между 2 строки, которые принадлежат к 2 таблицы (что происходит иметь ту же структуру).
Рассмотрите следующую ситуацию.
В таблице А (A_rowid, col1, col2, col3, COL4, col5 ..., Coln) и значения (ID1, знач1, знач2, val3, .., valn)
Таблица B (B_rowid, col1 , col2, col3, col4, col5 ..., coln) и значения (id2, val1, val2 ', val3, .., valn')
* A_rowid - уникальный ключ tableA, B_rowid - уникальный ключ таблицы B
fnction diff(A_rowid number, B_rowid number) returns varchar2 is
begin
--do something
end;
Все столбцы таблиц можно рассматривать как VARCHAR2.
Таким образом,
ожидается выход будет ->
Null, если никакой разницы не обнаружено
или
дифф: col2: val2-> val2 ', coln: valn-> valn'
Что важно здесь то, что я хотел бы сделать это без жесткого кодирования названий столбцов
(имена таблиц жёстко, хотя).
например. если и когда мы добавляем дополнительные столбцы в наши таблицы - функция все равно должна работать.
Что вы считаете «A_rowid» и «B_rowid»? –
Возможно, самый простой способ - выбрать «выбрать» из таблицы_A MINUS select * из таблицы_B' –
сравнить столбцы столбцов также есть? –