2017-09-04 36 views
0

聪明人!将集合包装为PL/SQL中的XMLTYPE(Oracle)

可以说我有一个表:

id NUMBER  name VARCHAR2  info XMLTYPE 
-- 
1    Brad    <?xml version="1.0" encoding="ISO-8859-5"?> 
2    Angelina   <?xml version="1.0" encoding="ISO-8859-5"?> 

在我的包,我可以选择它的一些集合变量v_table

我需要将其转换为XML并返回XMLTYPE,像这样:

<?xml version="1.0" encoding="ISO-8859-5"?> 
<rows> 
    <row> 
     <id type="NUMBER">1</id> 
     <name type="VARCHAR2">Brad</name> 
     <info type="XMLTYPE"><!-- somehow insert here xml, maybe base64 encoded --></info> 
    </row> 
    <row> 
     <id type="NUMBER">2</id> 
     <name type="VARCHAR2">Angelina</name> 
     <info type="XMLTYPE"><!-- somehow insert here xml, maybe base64 encoded --></info> 
    </row> 
</rows> 

所以我需要做一些通用的功能,任何集合转换成XML。不幸的是,我不知道PL/SQL(只有MySQL,MsSQL),而我只是不知道正确的开始方式。你能给我一些建议吗?

PS:“type”属性不是必需的,但会很酷。

+1

它是否需要转换一个集合,还是有足够的功能来直接将SQL转换为XML?包[DBMS_XMLGEN](https://docs.oracle.com/database/121/ARPLS/d_xmlgen.htm#ARPLS374)已经做到了。例如:'从双选择'dbms_xmlgen.getxml('select * from dual');'。然后,您可以通过XMLType函数TRANSFORM将样式表应用于结果。 –

+0

我知道我只是不知道明显的东西。谢谢! – Levsha

回答

0

谢谢,Jon Heller!

包DBMS_XMLGEN已经做到了。例如:从dual;中选择dbms_xmlgen.getxml('select * from dual')。然后,您可以通过XMLType函数TRANSFORM将样式表应用于结果。