Есть ли способ получить доступ к динамически доступному элементу User- определенной записи, объекта или ссылочного курсора с использованием переменной? Например. Что-то вродеДинамически доступ к члену пользовательских объектов в PL/SQL
get_member(my_object, 'member name');
Или, может быть,
my_object.$'member name';
EXECUTE IMMEDIATE не будет работать, как он не работает в пределах моей процедуры.
Позвольте мне кратко объяснить, что я пытаюсь выполнить. У меня есть таблица сопоставлений M, которая описывает, как записи таблицы A должны быть преобразованы в записи таблицы B. Отображение должно варьироваться в зависимости от конкретного типа записи в A (данный A.type). Я хотел, чтобы выполнить отображение что-то вроде этого (не точно, планирование на инкапсуляции логики отображения внутри функции потока, но принцип остается подобным):
SELECT
...
CASE
WHEN M.field_1_mapping IS NOT NULL THEN
-- column of A given by value of M.field_1_mapping
ELSE
null -- field_1 not filled for record type
END field_1,
--- etc.
FROM
table_a A,
mapping_table M
WHERE
A.TYPE = M.TYPE
Так что мой вопрос, как я могу это сделать. Снова я не могу использовать динамический SQL, поскольку он должен быть разным для каждого типа записи, но если столбец можно выбрать в зависимости от значения поля отображения, тогда будет работать sql-файл.
Я понимаю, что это может быть просто невозможно (и может противоречить философии проектирования PL/SQL), и в этом случае я бы приветствовал любые предложения, которые могут возникнуть в отношении того, как эта проблема может быть решена.
P.S: Я полагаю, можно было бы просто жестко закодировать отображение функции т.д .:
FUNCTION get_field(field_key IN VARCHAR(32), a NOCOPY IN table_a%rowtype) RETURN VARCHAR(2000) IS
out VARCHAR2(2000)
BEGIN
-- ...
IF field_key = 'field_1' THEN
RETURN a.field_1; END IF;
-- ..
END;
но кажется, что на самом деле безвкусный.
Да, это так, как идти о Это. Он должен будет переструктурировать мою таблицу сопоставления, и она должна будет сделать некоторые уточнения, такие как порядок столбцов и проверка типа данных. Будет ли способ обанкротить это? – aggergren