понедельник, 26 декабря 2011 г.

DBMS_ROWID

    В Oracle существует замечательный пакет DBMS_ROWID, а замечателен он тем, что по rowid строки может рассказать всякую информацию о нет, в том числе и сведения, о том, в какой таблице она находится.

    Подробности о функциях, содержащихся в пакете можно прочитать по ссылкам: Oracle Doc и PSOUG
    Есть тонкость в использовании самой ходовой, для меня, функции из этого пакета:

     DBMS_ROWID.ROWID_OBJECT (rowid_id IN ROWID) RETURN NUMBER;
    Данная функция возвращает Id объекта, который содержит наш rowid, самым не очевидным моментом связанным с этой функцией является то, обстоятельство, что object id, который она возвращает для таблиц (по крайней мере в Oracle 11g) надо искать в  user_objects или all_objects, не в поле object_id, а поле data_object_id.
    Этот не самый очевидный момент заставлял меня несколько раз прерывать программирование и лазить в дебрях БД.

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

Отправить комментарий