PolarDB PostgreSQL版(兼容Oracle)支持XMLType
复合类型,用于存储和操作XML数据。本文为您介绍该类型的定义、功能及其常用操作示例。
前提条件
支持的PolarDB PostgreSQL版(兼容Oracle)的版本如下:
Oracle语法兼容 2.0(内核小版本2.0.14.17.32.0及以上)
静态函数与构造函数
静态函数
createXML
:用于从字符串创建XMLType
对象。函数原型如下:STATIC FUNCTION createXML(xmlData IN CLOB) RETURN XMLType STATIC FUNCTION createXML(xmlData IN VARCHAR2) RETURN XMLType STATIC FUNCTION createXML(xmlData IN CLOB, schema IN VARCHAR2, validated IN NUMBER := 0, wellFormed IN NUMBER := 0) RETURN XMLType STATIC FUNCTION createXML(xmlData IN VARCHAR2, schema IN VARCHAR2, validated IN NUMBER := 0, wellFormed IN NUMBER := 0) RETURN XMLType
构造函数
XMLType
:与静态函数createXML
同理,也用于从字符串创建XMLType
对象。函数原型如下:CONSTRUCTOR FUNCTION XMLType(xmlData IN CLOB, schema IN VARCHAR2 := NULL, validated IN NUMBER := 0, wellFormed IN NUMBER := 0) RETURN SELF AS RESULT CONSTRUCTOR FUNCTION XMLType(xmlData IN VARCHAR2, schema IN VARCHAR2 := NULL, validated IN NUMBER := 0, wellFormed IN NUMBER := 0) RETURN SELF AS RESULT
说明
以上函数原型参数注意事项如下:
xmlData
参数为XML字符串。schema
参数暂不支持,必须为NULL。validated
参数暂不支持,必须为0。wellFormed
参数用于控制XML格式检查,如果wellFormed
为0或NULL,则xmlData
必须为合法的XML文档,如果wellFormed
为其他值,则不检查XML格式。
示例
静态函数
createXML
DECLARE xml_doc XMLType; BEGIN xml_doc := XMLType.createXML('<root><name>Alice</name><age>30</age></root>'); DBMS_OUTPUT.PUT_LINE(xml_doc.getStringVal()); END; /
返回结果如下:
<root><name>Alice</name><age>30</age></root>
构造函数
XMLType
DECLARE xml_doc XMLType; BEGIN xml_doc := XMLType('<root><name>Alice</name><age>30</age></root>'); DBMS_OUTPUT.PUT_LINE(xml_doc.getStringVal()); END; /
返回结果如下:
<root><name>Alice</name><age>30</age></root>
类型转换函数
XMLType
复合类型支持一系列类型转换函数,用于将XMLType
类型转换为其他类型,返回值类型就是转换的目标类型。函数类型如下:
getStringVal:将
XMLType
数据转换为VARCHAR2
字符串。MEMBER FUNCTION getStringVal() RETURN VARCHAR2
getClobVal:将
XMLType
数据转换为CLOB
字符串。MEMBER FUNCTION getClobVal() RETURN CLOB
getNumberVal:将
XMLType
数据转换为NUMBER
数值。MEMBER FUNCTION getNumberVal() RETURN NUMBER
示例
DECLARE
xml_doc XMLType;
xml_clob CLOB;
BEGIN
xml_doc := XMLType('<root><name>Alice</name><age>30</age></root>');
xml_clob := xml_doc.getClobVal();
DBMS_OUTPUT.PUT_LINE(xml_clob);
END;
/
返回结果如下:
<root><name>Alice</name><age>30</age></root>
extract函数
extract
函数提取XML文档中的一部分数据,并以XMLType
对象返回。函数原型如下:
MEMBER FUNCTION extract(xpath IN VARCHAR2) RETURN XMLType
示例
DECLARE
xml_obj XMLType := XMLType.createXML('<root><name>Alice</name><age>30</age></root>');
result XMLType;
BEGIN
result := xml_obj.extract('/root/name');
DBMS_OUTPUT.PUT_LINE(result.getStringVal()); -- 输出: <name>Alice</name>
END;
/
返回结果如下:
<name>Alice</name>
该文章对您有帮助吗?