Управление ресурсами
В Oracle Database 10g вы можете использовать модуль DBMS_XDB для создания и удаления ресурсов, папок-фолдеров и связей ресурсов. Вы также можете использовать этот модуль для блокирования/разблокирования ресурсов во время чтения или обновления XML данных: DECLARE res BOOLEAN; xr REF XMLType; x XMLType; BEGIN FOR po_rec IN (SELECT rownum id, ref(p) xref FROM customer p ORDER BY rowid) LOOP res:=DBMS_XDB.createResource('/public/customer'po_rec.id '.xml', po_rec.xref); END LOOP; END;
В этом примере все записи о клиентах считываются из таблицы customer и ресурсные XML документы, созданные в директории /public репозитория XML DB, используют функцию DBMS_XDB.createResource(). Дополнительно в репозитории XML DB можно создать папку /public/important_customer, как показано ниже: DECLARE retb BOOLEAN; BEGIN retb := DBMS_XDB.createFolder('/public/important_customer'); COMMIT; END; /
Далее, можно создать некий ресурс README.txt для отображения содержимого этой папки: DECLARE res BOOLEAN; BEGIN res := DBMS_XDB.createResource('/public/important_customer/README.txt', 'This folder lists all of the US customer who are important to our business'); COMMIT;
END; /
С того момента как создан в директории /public список клиентов, можно создать набор связей, вместо создания второй копии данных: EXEC DBMS_XDB.link('/public/customer1.xml', '/public/important_customer/','SteveJones.xml');
Если вы хотите удалить ресурс, можно использовать функцию DBMS_XDB.DeleteResource():
DBMS_XDB.DeleteResource ('/public/important_customer/SteveJones.xml'); DBMS_XDB.DeleteResource ('/public/customer1.xml');
Вы можете удалить ресурс с ресурсными на него связями. Разумеется, после перемещения оригинального ресурса все связанные ресурсы более с ним не связаны. Каждый из них вместо этого будет содержать копию данных.