XMLSERIALIZE

XMLSERIALIZE 関数は、XML-expression 引数から生成される、指定のデータ・タイプの直列化された XML 値を戻します。

構文図を読む構文図をスキップする
                    .-CONTENT-.                                      
>>-XMLSERIALIZE--(--+---------+--XML-expression--AS--| data-type |-->

   .--------------------------------------.      
   V  (1).-VERSION--'1.0'---------------. |      
>--------+------------------------------+-+--)-----------------><
         | .-EXCLUDING XMLDECLARATION-. |        
         '-+-INCLUDING XMLDECLARATION-+-'        

data-type

                        .-(--1--)-------.                                                                     
|--+-+-+-+-CHARACTER-+--+---------------+----------+--+----------------+---------------------+------------+--|
   | | | '-CHAR------'  '-(--integer--)-'          |  +-FOR BIT DATA---+                     |            |   
   | | '-+-+-CHARACTER-+--VARYING-+--(--integer--)-'  +-FOR SBCS DATA--+                     |            |   
   | |   | '-CHAR------'          |                   +-FOR MIXED DATA-+                     |            |   
   | |   '-VARCHAR----------------'                   '-ccsid-clause---'                     |            |   
   | |                                          .-(--1M--)-------------.                     |            |   
   | '-----+-+-CHARACTER-+--LARGE OBJECT-+------+----------------------+--+----------------+-'            |   
   |       | '-CHAR------'               |      '-(--integer--+---+--)-'  +-FOR SBCS DATA--+              |   
   |       '-CLOB------------------------'                    +-K-+       +-FOR MIXED DATA-+              |   
   |                                                          +-M-+       '-ccsid-clause---'              |   
   |                                                          '-G-'                                       |   
   |                .-(--1--)-------.                                                                     |   
   +-+---GRAPHIC----+---------------+-------+--+--------------+-------------------------------------------+   
   | |              '-(--integer--)-'       |  '-ccsid-clause-'                                           |   
   | +-+-GRAPHIC VARYING-+--(--integer--)---+                                                             |   
   | | '-VARGRAPHIC------'                  |                                                             |   
   | |             .-(--1M--)-------------. |                                                             |   
   | '---DBCLOB----+----------------------+-'                                                             |   
   |               '-(--integer--+---+--)-'                                                               |   
   |                             +-K-+                                                                    |   
   |                             +-M-+                                                                    |   
   |                             '-G-'                                                                    |   
   |                             .-(--1--)-------.                                                        |   
   +-+-+-+-NATIONAL CHARACTER-+--+---------------+----------+---------------------+--+------------------+-+   
   | | | +-NATIONAL CHAR------+  '-(--integer--)-'          |                     |  '-normalize-clause-' |   
   | | | '-NCHAR--------------'                             |                     |                       |   
   | | '-+-+-NATIONAL CHARACTER-+--VARYING-+--(--integer--)-'                     |                       |   
   | |   | +-NATIONAL CHAR------+          |                                      |                       |   
   | |   | '-NCHAR--------------'          |                                      |                       |   
   | |   '-NVARCHAR------------------------'                                      |                       |   
   | |                                                   .-(--1M--)-------------. |                       |   
   | '-----+-+-NATIONAL CHARACTER-+--LARGE OBJECT-+------+----------------------+-'                       |   
   |       | '-NCHAR--------------'               |      '-(--integer--+---+--)-'                         |   
   |       '-NCLOB--------------------------------'                    +-K-+                              |   
   |                                                                   +-M-+                              |   
   |                                                                   '-G-'                              |   
   |             .-(--1--)-------.                                                                        |   
   '-+-+-BINARY--+---------------+---------+-----------------+--------------------------------------------'   
     | |         '-(--integer--)-'         |                 |                                                
     | '-+-BINARY VARYING-+--(--integer--)-'                 |                                                
     |   '-VARBINARY------'                                  |                                                
     |                              .-(--1M--)-------------. |                                                
     '---+-BINARY LARGE OBJECT-+----+----------------------+-'                                                
         '-BLOB----------------'    '-(--integer--+---+--)-'                                                  
                                                  +-K-+                                                       
                                                  +-M-+                                                       
                                                  '-G-'                                                       

注:
  1. 同じ文節を複数回指定することはできません。
構文図を読む構文図をスキップする
ccsid-clause

|--CCSID--integer--+------------------+-------------------------|
                   '-normalize-clause-'   

normalize-clause

   .-NOT NORMALIZED-.   
|--+----------------+-------------------------------------------|
   '-NORMALIZED-----'   

CONTENT
任意の XML 値を指定できることを示し、直列化の結果はこの入力値に基づきます。
XML-expression
組み込み XML ストリングの値を戻す式。これは、直列化処理への入力です。
AS data-type
結果タイプを指定します。指定された結果のデータ・タイプの暗黙的または明示的な長さ属性は、直列化された出力を収容するのに十分な大きさでなければなりません。

CCSID が指定され、data-type が GRAPHIC、VARGRAPHIC、または DBCLOB の場合、CCSID は Unicode CCSID であることが必要です。

CCSID 属性が指定されないと、CCSID は CAST の指定に記されているように決定されます。

VERSION '1.0'
直列化された値の XML バージョンを指定します。サポートされる唯一のバージョンは「1.0」で、これをストリング定数として指定する必要があります。
EXCLUDING XMLDECLARATION または INCLUDING XMLDECLARATION
XML 宣言を結果に含めるかどうかを指定します。デフォルトは EXCLUDING XMLDECLARATION です。
EXCLUDING XMLDECLARATION
XML 宣言を結果に含めないことを指定します。
INCLUDING XMLDECLARATION
XML 宣言を結果に含めることを指定します。 XML 宣言は、ストリング '<?xml version="1.0" encoding="encoding-name"?> で、 encoding-name は結果のデータ・タイプの CCSID と一致します。

XML 式 がヌルになる可能性がある場合は、結果もヌルになる可能性があります。XML 式 がヌルの場合は、結果は NULL 値になります。

例 1: XMLELEMENT 関数によって戻される XML 値 (エレメント名が「Emp」で、従業員名をエレメントの内容として持つ単純 XML エレメント) を直列化して UTF-8 の CLOB にします。

    SELECT e.empno, XMLSERIALIZE(XMLELEMENT(NAME "Emp",
                                         e.firstnme || ' ' ||e.lastname)
                             AS CLOB(100) CCSID 1208) AS "result"
        FROM employee e WHERE e.lastname = 'SMITH'
結果は以下のようになります。
 EMPNO   result
 -----   ---------------------
 000250  <Emp>DANIEL SMITH</Emp>
 000300  <Emp>PHILIP SMITH</Emp>

例 2: XMLELEMENT 関数によって戻される XML 値を直列化して BLOB タイプのストリングにします。

    SELECT XMLSERIALIZE(XMLELEMENT(NAME "Emp",
                                         e.firstnme || ' ' ||e.lastname)
                       AS BLOB(1K) 
                       VERSION '1.0') AS "result"
        FROM employee e WHERE e.empno = '000300'
結果は以下のようになります。
 result
 ---------------------
 <Emp>PHILIP SMITH</Emp>

例 3: XMLELEMENT 関数によって戻される XML 値を直列化して CLOB タイプのストリングにします。XMLDECLARATION を以下のように組み込みます。

    SELECT e.empno, e.firstnme, e.lastname,
         XMLSERIALIZE(XMLELEMENT(NAME "xmp:Emp",
                                 XMLNAMESPACES('http://www.xmp.com' as "xmp"),
                                 XMLATTRIBUTES(e.empno as "serial"),
                                 e.firstnme, e.lastname
                                 OPTION NULL ON NULL)
                       AS CLOB(1000) CCSID 1208
                       INCLUDING XMLDECLARATION) AS "Result"
        FROM employee e WHERE e.empno = '000300'
結果は以下のようになります。
 EMPNO    FIRSTNME    LASTNAME    結果
 ------  ---------  ---------  -----------------------
 000300  PHILIP     SMITH      <?xml version="1.0" encoding="UTF-8" ?>
                               <xmp:Emp xmlns:xmp="http://www.xmp.com"
                                   serial="000300">PHILIPSMITH</xmp:Emp>