Ввод в формате 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, со всем связанным с этим ущербом для произво­дительности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: