Программирование >>  Реализация баз данных 

1 ... 75 76 77 [ 78 ] 79 80 81 ... 162


SELECT соответствуют атрибутам элемента. Есл адан параметр ELEMENTS, то столбцы таблицы соответствуют ецтам, а не атрибутам. По умолчанию в режиме AUTO столбцы соответствуют атрибутам xml.

Имя таблицы (или псевдоним, если есть) соответствует имени элемента M \ Имя псевдоним, если есть) соответствует имени атрибута или несоставному имени если в запросе задан параметр ELEMENTS.

В основе иерархии (вложенности элементов) результирующего набора лежит порядок таблиц, который определяется столбцами из списка конструкции SELECT, поэтому порядок задания имен столбцов в конструкции SELECT имеет большое значение.

Порядок идентификации и вложенности таблиц определяется последовательностью имен столбцов в списке SELECT. Гервая (крайняя слева) таблица формирует элемент высшего уровня результирующего документа XML. Вторая слева таблица, которая определяется столбцами из оператора формирует подэлементы элемента высшего и т, д.

Если столбец из списка констру1сдии SELECT находится в таблице, которая уже указывалась в конструкции SELECT (тогда указывался другой ее столбец), то этот столбец

добавляется как атрибут (или как подэлемент если задан параметр ELEMENTS) уже созданного элемента, а не открывает новую иерархию (путем добавления нового подэлемен-

та для этой таблицы).

Режим EXPUCIT

В режиме EXPLICIT документа XML, который возвращается в результате исполнения запроса, определяется при создании запроса. Запрос составляют так, чтобы дополнительная информация о возможных вложенных элементах задавалась явно как часть запроса. Также разрешается указывать дополнительные характеристики на уровне столбца с соответствующих директив. Если установлен режим EXPLICIT, то ответственность за формат ХМЕ-документа (в с/учае использования схемы XML-DATA) возлагается на пользователя.

XMLDATA

Ключевое слово XMLDATA что необходимо получить схему XML-Data. Она

добавляется в документ как встроенная схема. Основное назначение ключевого XML-DATA, заданного в - получение сведений о типах данных XML, которые можно

использовать там, где эти сведения при обработке числовых вы-

ражений). В противном случае все документа XML считается текстовой стро-

кой. При генерации схемы XML-Data требуются дополнительные ресурсы, поэтому возможно снижение производительности на сервере. Поэтому ее следует применять, только когда необходимы сведения о типах данных.

Если данные извлекаются из с типом данных в схеме

отсутствуют сведения о типах данных Если запрос определяет различные элементы XML с одинаковым именем, при XMLDATA генерируется неверная схема XML-

Data. Это происходит, когда не удается щит1, конфликты имен элементов и типов данных (у двух элементов могут быть одинаковые имена, но разные типы данных).

ELEMENTS

Если задан параметр ELEMENTS, то столбц адаются в виде подэлементов. В противном случае они соответствуют атрибутам XML. Этот параметр поддерживается только

в режиме AUTO,



BINARY BASE64

Если задан параметр BINARY Base64, то все двоичные данные, которые возвращает запрос, представлены в формате base64. Чтобы получать двоичные данные в режимах RAW и EXPLICIT, необходимо задать этот параметр. В режиме AUTO двоичные данные по умолчанию возврашаются в виде ссылки.

Доступ к данным XML ЩЬЮ функции OPENXML

Функция OPENXML - это ключевое слово язык t-SQL, которое позволяет получить набор строк, сформированный на основе хранящихся в памяти XML-документов. OPENXM L обеспечивает доступ к данным XML, как если бы они были реляционным набором строк. Для этого на основе внутренней структуры документа XML формируется

представление в виде набора строк. Записи такого набора строк разрешается хранить в

таблицах базы данных (аналогично наборам строк таблиц и представлений).

Функцию OPENXML используют в любых операторах SELECT и SELECT INTO, где

источником может быть таблица, представление или функция OPENROWSET.

Чтобы написать запрос к документу ХМ L с применением функции OPENXML, сначала необходимо вызвать системную хранимую процедуру которая выполняет синтаксический анализ документа XML и его описатель. Проанализированный документ - это различные узлы документа ХМЕ (элементы, атрибуты, текст, комментарии и т. д.), представленные в виде дерева. Описатель документа передается функции OPENXML, которая после этого на основе переданных параметров генерирует представление документа в виде набора строк.

Чтобы освободить память, необходимо удалить внутреннее преставление документа XML путем вызова системной хранимой процедуры sp xmt removedocument.

В следующем примере объявляется переменная, выполняется синтаксический анализ данных XML, оператор SELECT извлекает данные и представление документа XML удаляется из памяти:

- Объявление переменной. DECLARE ©riDoc INT

-- Синтаксический анализ данных XML. EXEC sp xmiprepaf edocument @hDoc OUTPUT, W<RO0T>

<CustofDers CustomerID= XYZAA ContactNatTie= Joe ConipanyNarae= Company1 > <Orders CustoinerID= XYZAA

OrderDate= 2000-08-25TOO:00:00 7> <0rders CustofinerID=XYZAA OrderDate= 2000-10-03TOO:00:00 /> </Customers>

<CListomers CustonierID= XYZBB г.г.! чп f.!.vne= Steve CompanyNarae= CorDpany2 >No Orders yet! <Orders CustomerID=-XYZBB

0rderDate= 20OO-06-21T00:00:007> <0rders CustoiiierID= XVZBB

0rderDate= 20O0-1O-10T0O:00:0Q7> </CustQmers> </ROOT>

9-2061



-- Оператор SELECT с функцией OFENXML. .

SELECT * - , .

FROM ]pENXML(@hDoc, N7H00T/Cuslomers/Orders)

WITH (CustomerlD NCHAR(5) . ./CustomerlD,

ContactName NVARCHAR(50) . ./aContactName, OrderDate DATETIME)

-- Удаление внутреннего етаяления документа XML.

EXEC sp xEni removedocument @hDo(. ,-

Синтаксис функции OPENXML показан далее: OPENXML(/rfocint [m],rowparier,i тагсилфп],[flags bytelin]]) [WITH {ОбъявлениеСхемы\ ИмяТа6лицы)\

Описатель документа XML (idoc)

Это не что иное, как описатель внутреннего представления документа ML. Внутреннее представление документа создается при вызове процедуры

Выражение XPath (rowpattern)

Выражение XPath (указанное в синтаксиса как определяет набор уз-

лов документа XML. Каждый определенный этим шаблоном узел соответствует одной

строке из набора, генерируемого функцией OPENXML.

Выражение XPath определяет л обые узлы документа ХМЕ (элементы, атрибуты, команды обработки ил.). Есл 1Л0н строк определяет совокупности ентов XML-документа, то каждому элементу соответствует одна строка набора строк. Например, если шаблон строк завершается атрибутам, то строка создается для каждого атрибута.

Соответствие (flags)

Оператор OPENXML позволяет оптимальным образом задать тип соответствия (ориентированный на атрибуты или ориентированный на элементы) между столбцами набора строк и узлами XML, описанными шаблоном строк. Эта информация используется для трансформации узлов ХМЕ в столбцы строк.

Соответствие задают одним из двух или одновременно обоими способами:

с помощью lerpa flags Mnd узлов XML соответствуют столбцам набора строк с теми же именами;

шщью параметра ColPattern. ColPattern - это выражение XPath, его задают как часть объявления схемы в конефукиии WITH Соответствие, заданное с помощью параметра ColPattern заменяют сведения о соответствии, заданные параметром flags. Параметр ColPattern позволяет задать особые соответствия (в случае соответствия, ориентированного на атрибуты или ориентированного м гьО, которые заменяют или добавляют соответствия по умолчанию, заданные с помощью флагов

Параметр выполняются следующие условия:

имя столбца набора строк отличается от имени элемента/атрибута, которому он соответствует. В этом .. .у-.и для идентификации имени элемента/атрибуга ХМЕ, соответствующего столбцу набора строк, используется параметр ColPattern;

столбцу нужно поставить в соответствие атрибут отствами. В этом случае

параметр ColPattern определяет метасвойства.

Оба параметра, flags и не обязательны. Если соответствие не задано, то по

умолчанию предполагается соответствие, ориентированное на атрибуты (значение пара-1 етра flags по умолчанию).



1 ... 75 76 77 [ 78 ] 79 80 81 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика