Для работы с ресурсами репозитария можно использовать системный подтип XDBURITYPE абстрактного типа URITYPE. В частности, методы типа XDBURITYPE позволяют извлекать из репозитария содержимое ресурсов.
Пример определения длины файла /public/OracleXML.doc:
SELECT DBMS_LOB.GETLENGTH ( XDBURITYPE ( '/public/OracleXML.doc' ).GETBLOB ( ) ) AS bytes FROM dual ;
Результат:
BYTES ---------- 504320
Таким же образом можно извлечь большой файл (содержимое, а не длину) в переменную программы.
Одно из применений типа XDBURITYPE - дать возможность ссылаться на данные в репозитарии XBM DB из полей обычных таблиц.
Пример:
CREATE TABLE projects AS SELECT 1 AS pid , XDBURITYPE ( '/public/OracleXML.doc' ) AS description FROM dual ;
SELECT DBMS_LOB.GETLENGTH ( p.description.GETBLOB ( ) ) AS bytes FROM projects p;
Получим:
BYTES ---------- 504320
Обратите внимание, что сослаться на файл в репозитарии из БД можно и через тип HTTPURITYPE, однако в этом случае в ссылке появится имя компьютера и номер порта - признаки, внешние по отношению в содержимому БД, неконтролируемые средствами БД и, в отличие от ссылок извне, по сути ненужные.