Я хочу регистрировать изменения данных в некоторых таблицах Oracle. Структура таблицы журнала:
(...)
olddata (xmltype)
newdata (xmltype)
Изменения данных будут регистрироваться триггерами при обновлении, вставке, удалении
Есть ли какой-нибудь простой способ заставить работать код ниже?
log.olddata := magic_rowtype_to_xml_function(old);
Я видел DBMS_XMLGEN.getXmltype('select * from table where row_id = x')
, но я не нашел, как заставить его работать с типами строк.
EDIT
Я нашёл немного работы:
Сначала получите немного информации о таблице:
select 'xmlelement("'|| column_name||'",new.' || column_name || '),' from all_tab_columns where lower(table_name) = 'my_table';
и просто скопируйте результат вставки в
select xmlelement("doc",
--paste here
) from dual;
Ужасно, но работает.