Я пишу процедуру PL/SQL, который загружает некоторые данные из схемы A в схемах B. Они оба очень разные схемы, и я не могу изменить структуру схема B.Преобразование столбцов таблицы ключевых пары значений
Столбцы в различных таблицах на схеме A (объединенные в виде) должны быть вставлены в схему B в виде ключей => пары значений в 2 столбца в таблице, каждая в отдельной строке. Например, первое имя сотрудника может присутствовать как employee.firstname в схеме А, но нужно будет ввести в схеме B, как:
id=>1, key=>'A123', value=>'Smith'
Есть почти 100 ключей, с потенциалом для более быть добавлены в будущем. Это означает, что я действительно не хочу жестко кодировать любой из этих ключей.
Пример кода:
create table schema_a_employees (
emp_id number(8,0),
firstname varchar2(50),
surname varchar2(50)
);
insert into schema_a_employees values (1, 'James', 'Smith');
insert into schema_a_employees values (2, 'Fred', 'Jones');
create table schema_b_values (
emp_id number(8,0),
the_key varchar2(5),
the_value varchar2(200)
);
Я думал, что это элегантное решение, скорее всего, включать в себя справочную таблицу, чтобы определить, какое значение для вставки для каждого ключа, и не включает в себя фактически жестко прописывать десятки подобных заявлений, как .. ..
insert into schema_b_values (1, 'A123', v_firstname);
insert into schema_b_values (1, 'B123', v_surname);
То, что я хотел бы быть в состоянии сделать это иметь локальную таблицу поиска в схеме A, в котором перечислены все ключи от схемы B, вместе с колонной, которая дает имя столбца в таблицу в схеме A, которую следует использовать для заполнения, например ключ «A123» в схеме B должен быть заполнен значением столбца «firstname» в схеме A, например.
create table schema_a_lookup (
the_key varchar2(5),
the_local_field_name varchar2(50)
);
insert into schema_a_lookup values ('A123', 'firstname');
insert into schema_a_lookup values ('B123', 'surname');
Но я не знаю, как я мог динамически использовать значение из таблицы поиска, чтобы сообщить Oracle, какие столбцы использовать.
Итак, мой вопрос в том, есть ли элегантное решение для заполнения таблицы schema_b_values данными из schema_a_employees без hardcoding для каждого возможного ключа (то есть A123, B123 и т. Д.)?
Cheers.
+! для утверждения инструкций настройки. Это упростило тестирование решения. – APC