XMLSERIALIZE

XMLSERIALIZE 函數會傳回從 XML-expression 引數產生之指定資料類型的序列化 XML 值。

讀取語法圖跳過視覺化語法圖XMLSERIALIZE(CONTENTXML 表示式AS資料類型VERSION'1.0'1EXCLUDING XMLDECLARATIONINCLUDING XMLDECLARATION )
資料類型
讀取語法圖跳過視覺化語法圖CHARACTERCHAR(1)(整數)CHARACTERCHARVARYINGVARCHAR(整數)FOR BIT DATAFOR SBCS DATAFOR MIXED DATAccsid 子句CHARACTERCHARLARGE OBJECTCLOB(1M)(整數KMG)FOR SBCS DATAFOR MIXED DATAccsid 子句GRAPHIC(1)(整數)GRAPHIC VARYINGVARGRAPHIC(整數)DBCLOB(1M)(整數KMG)ccsid 子句NATIONAL CHARACTERNATIONAL CHARNCHAR(1)(整數)NATIONAL CHARACTERNATIONAL CHARNCHARVARYINGNVARCHAR(整數)NATIONAL CHARACTERNCHARLARGE OBJECTNCLOB(1M)(整數KMG)正規化子句BINARY(1)(整數)BINARY VARYINGVARBINARY(整數)BINARY LARGE OBJECTBLOB(1M)(整數KMG)
附註:
  • 1 不得多次指定相同的子句。
ccsid 子句
讀取語法圖跳過視覺化語法圖CCSID整數正規化子句
normalize-clause
讀取語法圖跳過視覺化語法圖NOT NORMALIZEDNORMALIZED
內容
指定可指定任何 XML 值,且序列化的結果是以這個輸入值為基礎。
XML 表示式
傳回內建 XML 字串值的表示式。 這是序列化程序的輸入。
AS data-type
指定結果類型。 指定結果資料類型的隱含或明確長度屬性必須足以包含序列化輸出。

如果指定 CCSID ,且 資料類型 是 GRAPHIC、VARGRAPHIC 或 DBCLOB ,則 CCSID 必須是 Unicode CCSID。

如果未指定 CCSID 屬性,則會依照 CAST 規格中的說明來決定 CCSID。

VERSION '1.0'
指定序列化值的 XML 版本。 唯一支援的版本是 '1.0' ,必須指定為字串常數。
INCLUDING XMLDECLARATION 或 INCLUDING XMLDECLARATION
指定是否將 XML 宣告併入結果中。 預設值是 EXCLINXING XMLDECLARATION。
排除 XMLDECLARATION
指定結果中不包含 XML 宣告。
INCLUDING XMLDECLARATION
指定將 XML 宣告併入結果中。 The XML declaration is the string '<?xml version="1.0" encoding="encoding-name"?>, where encoding-name matches the CCSID of the result data type.

如果 XML 表示式 的結果可以是空值,則結果可以是空值; 如果 XML 表示式 的結果是空值,則結果是空值。

範例

範例 1: Serialize into CLOB of UTF-8,這是 XMLElement 函數所傳回的 XML 值,它是一個簡式 XML 元素,以 "Emp" 作為元素名稱,並以員工名稱作為元素內容:

    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: 序列化為 BLOB 類型的字串, XMLXX_ENCODE_CASE_ONE Element 函數傳回的 XML 值:

    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: 序列化為 CLOB 類型的字串, XMLELEMENT 函數傳回的 XML 值。 包括 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   Result
 ------  ---------  ---------  -----------------------
 000300  PHILIP     SMITH      <?xml version="1.0" encoding="UTF-8" ?>
                               <xmp:Emp xmlns:xmp="http://www.xmp.com"
                                   serial="000300">PHILIPSMITH</xmp:Emp>