【发布时间】:2017-04-13 13:52:18
【问题描述】:
如题所述,如何将Oracle中对象类型的数据解析为XML格式?
例如,如果我有一个对象类型 CUSTOMER,如何将数据从该对象的实例转换为 XML 文本?
【问题讨论】:
标签: xml oracle plsql object-type
如题所述,如何将Oracle中对象类型的数据解析为XML格式?
例如,如果我有一个对象类型 CUSTOMER,如何将数据从该对象的实例转换为 XML 文本?
【问题讨论】:
标签: xml oracle plsql object-type
首先你创建了你的对象类型:
CREATE TYPE CUSTOMER AS OBJECT
(NAME VARCHAR2(100));
必须将其转换为XMLTYPE,然后才能使用getstringval 函数从中获取XML 文本。
DECLARE
v_customer CUSTOMER;
v_xml XMLTYPE;
BEGIN
v_customer:= NEW CUSTOMER('Josh');
v_xml := XMLTYPE(v_customer);
DBMS_OUTPUT.put_line(v_xml.getstringval);
END;
这将产生以下输出:
<CUSTOMER><NAME>Josh</NAME></CUSTOMER>
【讨论】:
CREATE TYPE CUSTOMER AS OBJECT ("Name" VARCHAR2(100));' then the output will be 你可以使用SYS_XMLGEN
SELECT SYS_XMLGEN(v_customer, XMLFormat(enclTag =>'CUSTOMER'))
INTO v_xml
FROM dual;
使用起来不太方便.. 但也支持 TABLE OF ... 类型并且“打印得很漂亮”以在文本中包含换行符
即
DECLARE
v_customer CUSTOMER;
v_xml XMLTYPE;
BEGIN
v_customer:= NEW CUSTOMER('Josh');
SELECT SYS_XMLGEN(v_customer, XMLFormat(enclTag =>'CUSTOMER'))
INTO v_xml
FROM dual;
DBMS_OUTPUT.put_line(v_xml.getstringval);
END;
/
<?xml version="1.0"?>
<CUSTOMER>
<NAME>Josh</NAME>
</CUSTOMER>
create type tab_of_cust as TABLE OF CUSTOMER;
DECLARE
v_customer CUSTOMER;
v_xml XMLTYPE;
v_tab tab_of_cust := tab_of_cust();
BEGIN
v_customer:= NEW CUSTOMER('Josh');
v_tab.extend(1);
v_tab(1) := v_customer;
SELECT SYS_XMLGEN(v_tab, XMLFormat(enclTag =>'CUST_TAB'))
INTO v_xml
FROM dual;
DBMS_OUTPUT.put_line(v_xml.getstringval);
END;
/
<?xml version="1.0"?>
<CUST_TAB>
<CUSTOMER>
<NAME>Josh</NAME>
</CUSTOMER>
</CUST_TAB>
【讨论】: