КаталогИндекс раздела
НазадОглавлениеВперед


Скалярная функция XMLSERIALIZE

                    .-CONTENT-.
>>-XMLSERIALIZE--(--+---------+--------------------------------->
 
>-- XML-выражение--AS--| тип-данных |---------------------------->
 
   .---------------------------------------.
   V .-VERSION--'1.0'---------------. (1)  |
>----+------------------------------+------+--)----------------><
     | .-EXCLUDING XMLDECLARATION-. |
     '-+-INCLUDING XMLDECLARATION-+-'
 
тип-данных:
 
                    .-(1)---------.
|--+-+-CHARACTER-+--+-------------+----------------------------+--|
   | '-CHAR------'  '-(--целое--)-'                            |
   +-+-VARCHAR----------------+--(--целое--)-------------------+
   | '-+-CHARACTER-+--VARYING-'                                |
   |   '-CHAR------'                                           |
   |                                  .-(1M)-----------------. |
   +-+-CLOB------------------------+--+----------------------+-+
   | '-+-CHARACTER-+--LARGE OBJECT-'  '-(--целое--+---+--)---' |
   |   '-CHAR------'                              +-K-+        |
   |                                              +-M-+        |
   |                                              '-G-'        |
   |                           .-(1M)---------------.          |
   '-+-BLOB-----------------+--+--------------------+----------'
     '-BINARY--LARGE OBJECT-'  '-(--целое--+---+--)-'
                                           +-K-+
                                           +-M-+
                                           '-G-'
 

Примечания:

  1. Одна и та же фраза не должна задаваться более одного раза.

Схема - SYSIBM. Имя функции не может задаваться как квалифицированное имя.

Функция XMLSERIALIZE возвращает сериализованное XML-значение заданного типа данных, сгенерированное аргументом XML-выражения.

CONTENT

Задает, что может быть задано любое XML-значение, и результат сериализации базируется на этом входном значении.

XML-выражение

Задает выражение, которое возвращает a значение типа данных XML. Значение XML-последовательности не должно содержать пунктов, являющихся узлами атрибутов (SQLSTATE 2200W). Это входные данные для процесса сериализации.

AS тип-данных

Задает тип результата. Явная или неявная длина атрибута для заданного тип данных результата должна быть достаточной, чтобы вместить выходные данные сериализации (SQLSTATE 22001).

VERSION '1.0'

Задает версию XML для сериализованного значения. Поддерживается только версия '1.0', которая должна задаваться как строковая константа (SQLSTATE 42815).

EXCLUDING XMLDECLARATION или INCLUDING XMLDECLARATION

Задает, включается ли объявление XML в результат. По умолчанию принимается EXCLUDING XMLDECLARATION.

EXCLUDING XMLDECLARATION

Задает, что объявление XML не включается в результат.

INCLUDING XMLDECLARATION

Задает, что объявление XML включается в результат. Объявление XML является строкой '<?xml version="1.0" encoding="UTF-8"?>'.

Результат имеет тип данных, определенный пользователем. XML-последовательность конвертируется так, чтобы она имела единственный узел документа, применением XMLDOCUMENT к XML-выражению перед сериализацией результирующих узлов XML. Если результат XML-выражения может быть null, результат может быть null; если результат XML-выражения - null, результат имеет значение null.

Примечания:

  1. Поддержка в базах данных не-Unicode и базах данных с многими разделами: Функция поддерживается только как в версии 8. Ключевое слово CONTENT должно быть задано, а тип данных BLOB не может задаваться, и опция XMLDECLARATION не может задаваться (SQLSTATE 42997).
  2. Кодировка в сериализованном результате: Сериализованный результат кодируется в UTF-8. Если XMLSERIALIZE используется с символьным типом данных и задана фраза INCLUDING XMLDECLARATION, результирующая символьная строка, содержащая сериализованный XML, может иметь XML-объявление кодировки, которое не соответствует кодовой странице символьной строки. После сериализации, которая использует кодировку UTF-8, символьная строка, возвращаемая от сервера клиенту, конвертируется в кодовую страницу клиента, и эта кодовая страница может быть отличной от UTF-8.

    Следовательно, приложения должны избегать прямого использования XMLSERIALIZE INCLUDING XMLDECLARATION, которая возвращает тип символьной строки, и должны выбирать XML-значения прямо в host-переменные, чтобы поддержать соответствие между внешней кодовой страницей и кодировкой в XML-объявлении. Если XMLSERIALIZE должна использоваться в такой ситуации, должен быть задан тип BLOB, чтобы обойти преобразование кодовой страницы.

  3. Альтернативный синтаксис: Вместо XMLCLOB(XML-выражение) может быть задано XMLSERIALIZE(XML-выражение AS CLOB(2G)). Это поддерживается только для совместимости с предыдущими релизами DB2.

НазадОглавлениеВперед
КаталогИндекс раздела