首批通过分布式安全可靠测评,为关键业务系统打造
XMLSERIALIZE
更新时间:2026-04-08 18:43:28
描述
该函数将 XMLType 数据序列化为 VARCHAR、VARCHAR2、CLOB 或者 BLOB 类型,可通过参数进行格式化。
语法
XMLSERIALIZE
( { DOCUMENT | CONTENT } value_expr [ AS datatype ]
[ ENCODING xml_encoding_spec ]
[ VERSION string_literal ]
[ NO INDENT | { INDENT [SIZE = number] } ]
[ { HIDE | SHOW } DEFAULTS ]
)
参数解释
| 字段 | 说明 |
|---|---|
| DOCUMENT | 指定解析的内容,需符合 XML Document 规范。 |
| CONTENT | 指定解析的内容必须为一个有效的 XML 片段,但不一定合法。 |
| AS datatype | 指定返回的类型,可以定义为 VARCHAR、VARCHAR2、BLOB 或 CLOB,默认为 CLOB。如果返回类型是 BLOB,可以指定ENCODING。 |
| ENCODING | 使用指定的编码。 |
| VERSION | 指定版本。 |
| NO INDENT ELEMENT | 指定层级之间不换行,不缩进。 |
| INDENT SIZE | 设置缩进空格数量。如果设置为 0,表示 ELEMENT 层级之间只换行,不缩进,默认值为 2。 |
| HIDE | SHOW DEFAULTS | 是否显示 XML Schema 所定义的默认值。 |
返回类型
返回 VARCHAR、VARCHAR2、CLOB 或者 BLOB 数据类型。
示例
obclient> SELECT XMLSERIALIZE(CONTENT XMLPARSE(CONTENT 'aaa' WELLFORMED) AS varchar2(100) VERSION '1.0') AS RES FROM DUAL;
+---------------------------+
| RES |
+---------------------------+
| <?xml version="1.0"?>
aaa |
+---------------------------+
1 row in set
obclient> SELECT XMLSERIALIZE(DOCUMENT XMLPARSE(DOCUMENT '<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<FROM>Jani</FROM>
<heading>Reminder</heading>
<body><p>Do not forget me this weekend!</p></body>
</note>') AS varchar2(200) NO INDENT) AS RES FROM DUAL;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| RES |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><FROM>Jani</FROM><heading>Reminder</heading><body><p>Do not forget me this weekend!</p></body></note> |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
obclient> SELECT XMLSERIALIZE(DOCUMENT XMLPARSE(DOCUMENT '<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<FROM>Jani</FROM>
<heading>Reminder</heading>
<body><p>Do not forget me this weekend!</p></body>
</note>') AS varchar2(200)) AS RES FROM DUAL;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| RES |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<FROM>Jani</FROM>
<heading>Reminder</heading>
<body>
<p>Do not forget me this weekend!</p>
</body>
</note>
|
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set