Расширяем набор пакетов, доступных в Digital Q.DataBase для тех, кто переходит с Oracle...
Расширяем набор пакетов, доступных в Digital Q.DataBase для тех, кто переходит с Oracle Database. Сегодня — о поддержке DBMS_ROWID. ► Для чего он нужен Пакет DBMS_ROWID предоставляет функции для работы с ROWID — уникальными идентификаторами строк в таблицах Oracle. Пакет позволяет создавать ROWID и извлекать информацию о них из PL/SQL-программ и SQL-выражений, не разбирая вручную внутренний base-64 формат . ► Основные функции · ROWID_CREATE — создаёт ROWID из составных частей (для тестирования); · ROWID_INFO — возвращает тип и компоненты ROWID; · ROWID_TYPE — возвращает тип ROWID (0 — restricted, 1 — extended); · ROWID_OBJECT — возвращает номер объекта данных; · ROWID_RELATIVE_FNO — возвращает номер файла; · ROWID_BLOCK_NUMBER — возвращает номер блока; · ROWID_ROW_NUMBER — возвращает номер строки; · ROWID_TO_EXTENDED / ROWID_TO_RESTRICTED — конвертируют ROWID между форматами. ► Пример использования ```sql DECLARE row_id ROWID; object_no INTEGER; BEGIN SELECT ROWID INTO row_id FROM emp WHERE empno = 7499; object_no := DBMS_ROWID.ROWID_OBJECT(row_id); DBMS_OUTPUT.PUT_LINE('Номер объекта: ' || object_no); END; ``` ► Области применения · Определение физического расположения строки (файл, блок) без прямого разбора ROWID; · Конвертация ROWID между ограниченным и расширенным форматами; · Проверка валидности ROWID перед операциями; · Диагностика проблем с блоками данных.