| Каталог | Индекс раздела |
| Назад | Содержание | Вперед |
В XQuery запрос может вызывать одну из следующих функций, чтобы получить входные данные XML из базы данных DB2: db2-fn:sqlquery и db2-fn:xmlcolumn.
Функция db2-fn:xmlcolumn выбирает один столбец XML, а db2-fn:sqlquery выбирает значения XML на основе полного запроса SQL.
| db2-fn:xmlcolumn | Функция db2-fn:xmlcolumn принимает в качестве аргумента литеральную строку, которая идентифицирует XML-столбец в таблице или в представлении, и возвращает последовательность значений XML, которые находятся в этой колонке. Аргумент этой функции чувствителен к регистру. Строковый литерал должен быть полным именем столбца типа XML. Эта функция позволяет вам выделить целый столбец данных XML без применения условия поиска.
В следующем примере запрос использует функцию db2-fn:xmlcolumn, чтобы получить все заказы из столбца
db2-fn:xmlcolumn('BUSINESS.ORDERS.PURCHASE_ORDER')/shipping_address/city
|
| db2-fn:sqlquery | Функция db2-fn:sqlquery принимает строковый аргумент, который представляет полный запрос и возвращает последовательность XML, которая является конкатенацией значений XML, возвращенных запросом. Полный запрос должен определять результат, состоящий из одного столбца, и столбец должен иметьтип данных XML. Применение полного запроса позволяет вам использовать всю мощь SQL для представления данных XML для XQuery.
В следующем примере таблица
db2-fn:sqlquery("
SELECT purchase_order FROM business.orders
WHERE ship_date = '2005-06-15' ")/shipping_address/city
|
Важно: Последовательность XML, которая возвращается функцией db2-fn:sqlquery или db2-fn:xmlcolumn, может содержать любые значения XML, включая атомарные значения и узлы. Эти функции не всегда возвращают последовательность правильно форматированных документов. Например, функция может возвращать единственное атомарное значение, такое как 36, как экземпляр типа данных XML.
SQL и XQuery имеют разные соглашения о чувствительности имен к регистру. Вы должны иметь в виду это различие при использовании функций db2-fn:sqlquery и db2-fn:xmlcolumn.
| SQL - язык, нечувствительный к регистру | По умолчанию все идентификаторы, которые используются в операторах SQL, автоматически преобразуются в верхний регистр. Следовательно, имена таблиц и столбцов SQL обычно являются именами в верхнем регистре, такими как BUSINESS.ORDERS и PURCHASE_ORDER в предыдущих примерах. В операторах SQL к этим столбцам можно обращаться, используя нижний регистр: business.orders и purchase_order, что автоматически преобразуется в верхний регистр при обработке оператора SQL. (Вы можете также создать в SQL имя чувствительное к регистру, называемое идентификатором с разделителями, заключив имя в кавычки.) |
| XQuery - язык, чувствительный к регистру | XQuery не преобразует в именах нижний регистр в верхний. Это различие может привести к некоторой путанице, когда XQuery и SQL используются вместе. Строка, котоая передается в db2-fn:sqlquery, интерпретируется как запрос SQL и разбирается парсером SQL, который преобразует все именв в верхний регистр. Так, в примере db2-fn:sqlquery имя таблицы business.orders и имена столбцов purchase_order и ship_date могут быть в нижнем или в верхнем регистре. Операнд db2-fn:xmlcolumn, однако, не является запросом SQL. Операнд является чувствительным к регистру строеовым литералом XQuery, который представляет имя столбца. Поскольку настоящее имя столбца - BUSINESS.ORDERS.PURCHASE_ORDER, это имя в операнде db2-fn:xmlcolumn должно задаваться в верхнем регистре. |
| Назад | Содержание | Вперед |
| Каталог | Индекс раздела |