использование таблицы с именами таблиц хранилища и именами столбцов для сравнения в oracle

#sql #oracle #select #plsql #comparison

#sql #Oracle #выберите #plsql #сравнение

Вопрос:

У меня есть таблица со столбцами old_table , new_table , old_column и new_column . я вставил в эти имена таблиц, а также соответствующие имена столбцов из базы данных для использования для сравнения. Таким образом, я могу выполнить все сравнения от нового столбца таблицы к старому в пределах одной таблицы.

Моя проблема в том, что я действительно не знаю, как это сделать. Я думал о динамическом SQL или выборке и циклическом просмотре каждой строки, но не совсем уверен. Мне нужно иметь возможность вызывать первую строку таблицы, которая будет содержать по одному из каждого из этих столбцов ( old_table , new_table , old_column и new_column ), и иметь возможность использовать два имени столбцов в инструкции select , а затем использовать два имени таблиц в предложении FROM. И затем так далее для каждой строки в таблице.

Любая помощь в подходе была бы высоко оценена.

Комментарии:

1. Не могли бы вы просто получить необходимую информацию из системных таблиц?

2. прежде всего, мы не знаем, что вы делаете со своими таблицами и когда. Есть ли у вас в приложении динамическая логика создания таблиц и отслеживание созданных и удаленных таблиц? На данный момент неясно, о чем вы спрашиваете. Если вам нужна информация о существующих таблицах / столбцах, у вас есть user_tables и т.д. Для этого.

3. Это было бы довольно интересным объединением… Вам нужно будет взять список столбцов, требуемых создаваемым вами сценарием (и именами таблиц, я полагаю), затем присоединиться к этой таблице здесь… затем выполните цикл запроса, который создает переменную для динамического выполнения. Идея Дэна, вероятно, лучше, просто прочитайте sysobjects, чтобы получить текущее состояние, однако это не очень хорошо справится со старым именем таблицы и новым именем таблицы. Честно говоря, для настройки «старое имя таблицы / новое имя таблицы» у вас есть люди, которые довольно плохо используют базу данных… имена таблиц не должны меняться. Какие бизнес-требования вы пытаетесь выполнить здесь?

4. Можете ли вы уточнить конечный результат, который вы ищете? Вы хотите подсчитать, сколько строк отличается для каждого столбца (поэтому вам потребуется запрос для каждой строки в вашей таблице)? Или вам просто нужно знать, чем отличаются старые и новые таблицы (таким образом, запрос для каждой отдельной комбинации новая / старая таблица)?

5. я уже делал это, используя запросы, выполняющие обычные таблицы. я делаю это так, что я хочу использовать такой подход к метаданным, например, выбрать column_name_old, column_name_new из old_table, New_table но на самом деле я хочу, чтобы он вставлял строку из таблицы всех списков, чтобы пример old_table был заменен на id, а новая таблица id2 затем так далее