首页 > 解决方案 > 如何在 oracle XML 中省略 XMLForest 函数中使用的别名

问题描述

pl SQL代码段 SELECT Xmlserialize(DOCUMENT
XMLELEMENT("intrastat", XMLAGG( Xmlforest(ENVELOPE_ID AS "envID", XMLFOREST(DATE_ AS "date",TIME_ AS "Time")AS "Date time", PARTY_ID AS "pid",PARTY_NAME AS "pname", XMLFOREST(Xmlelement("RC",REGION_CODE) AS RC,Xmlelement("TCPCODE",MODE_OF_TRANSPORT_CODE) AS TCPCODE) AS "item") ))) FROM INTRASTAT_XML_TEMPLATE_LINE_TMP

造成麻烦的实际输出的一部分 <item><RC><RC>as</RC></RC><TCPCODE><TCPCODE>22</TCPCODE></TCPCODE></item>

我想得到什么 <item><RC>ads</RC><TCPCODE>22</TCPCODE></item>

标签: oracleplsql

解决方案


您当前的 plsql 代码段:

XMLFOREST(Xmlelement("RC",REGION_CODE) AS RC,Xmlelement("TCPCODE",MODE_OF_TRANSPORT_CODE) AS TCPCODE) AS "item")

由于我们在这里使用了别名,我们得到了多个标签——一个用于别名,一个用于 XMLELEMENT 函数的第一个参数。

现在,由于您只想要一个元素 - item,带有两个标签 - RC(保存REGION_CODE字段数据)和TCPCODE(保存MODE_OF_TRANSPORT_CODE字段数据),在我看来,这应该足以满足您的要求:

Xmlelement("item", XMLFOREST(REGION_CODE "RC", MODE_OF_TRANSPORT_CODE "TCPCODE")

~昆塔尔


推荐阅读