Ввод в формате XML
Формат XML может использоваться не только для представления выходных данных запросов, но и для представления входных данных, в частности строк данных, добавляемых в таблицы базы данных. Для обработки XML-данных СУБД должна идентифицировать отдельные составляющие данных (представленные элементами или атрибутами), а после этого сопоставить имена элементов или атрибутов со столбцами целевой таблицы (используя имена столбцов или схему, специфическую для конкретной СУБД). Например, следующую простую инструкцию INSERT
INSERT INTO OFFICY (ID_OFC, CITY, REGION, SALES)
VALUES (321, 'Киров', 'Кировская', 835915.00)
легко преобразовать в эквивалентную гибридную SQL/XML-инструкцию:
INSERT INTO OFFICY (ID_OFC, CITY, REGION, SALES)
VALUES (<?xml version="1.0"?>
<row>
<id_ofc>321</id_ofc>
<city>Киров</city>
<region>Кировская</region>
<sales>835915.00</sales>
</row>)
Аналогичным образом выполняется обновление базы данных. Например, приведенную ниже инструкцию UPDATE
UPDATE OFFICY
SET TARGET = 200000.00, MNGR = 2108
WHERE OFFICE = 23
можно преобразовать в такую гибридную SQL/XML инструкцию:
UPDATE OFFICY
WHERE ID_OFC = 321
<?xml version-"1.0"?>
<update_info>
<values>
<target>200000.00</target>
<mngr>2108</mngr>
</values>
<where>office = 321</where>
</update_info>
В инструкции DELETE необходимо указать только предложение WHERE, для задания которого используются те же соглашения.
Уже несколько ведущих производителей СУБД добавили в свои продукты возможности обработки XML-операций вставки, обновления и удаления строк, но в каждом из них используется свой способ представления имен таблиц и столбцов, а также значений данных в тексте XML и сопоставления их с соответствующими структурами базы данных. Стандарты для этого гибридного синтаксиса SQL/XML пока еще не разработаны.
Хотя в небольшом XML-документе значения для вставки или обновления представляются очень просто, и здесь есть некоторые проблемы. Например, список столбцов в SQL-инструкции INSERT будет излишним, если в XML-документе наряду со значениями данных, которые необходимо вставить, также содержатся имена столбцов базы данных, заданные с помощью имен элементов или атрибутов. Возникает вопрос, почему бы не убрать из запроса список столбцов, чтобы нужная информация извлекалась из XML-документа.
Для программного использования SQL проблема заключается в том, что XML-документ и содержащиеся в нем значения данных определяются и передаются СУБД во время выполнения программы. И если имена столбцов или даже имя таблицы указаны только в XML-документе, до момента выполнения программы СУБД не знает, какие таблицы и столбцы участвуют в запросе. В такой ситуации СУБД должна использовать динамический SQL, со всем связанным с этим ущербом для производительности.
Дата добавления: 2015-02-03; просмотров: 854;