使用DBMS_XMLGEN生成XML,即使结果集为空

时间:2019-04-15 14:32:15

标签: xml oracle plsql

我正在使用DBMS_XMLGEN从给定查询创建XML。我使用XSLT格式化此XML。

当结果集为空时,我遇到一个问题:DBMS_XMLGen.getXML返回的XML为空(没有空的XML节点-大小为0的Clob)。 我需要XML保留与XSLT中定义的相同的结构,但只需返回空的XML节点即可。

这是代码(在此之前计算lv_FinalQuery和lv_Clb_Xsl)

       -- creating new context query
       lv_Vc2_location := 'DBMS_XMLGEN.newContext';
       lv_queryCtx := DBMS_XMLGen.newContext(lv_FinalQuery);

       -- Setting the xsl file with the query context
       lv_Vc2_location := 'DBMS_XMLGEN.setXSLT';
       DBMS_XMLGen.setXSLT(lv_queryCtx,lv_Clb_Xsl);

       -- Setting the rowset tag
       lv_Vc2_location := 'DBMS_XMLGEN.setRowsetTag';
       DBMS_XMLGen.setRowsetTag(lv_queryCtx, 'USER_LIST');

       -- Setting the row tag
       lv_Vc2_location := 'DBMS_XMLGEN.setRowTag';
       DBMS_XMLGen.setRowTag(lv_queryCtx, 'USER');

       -- Getting the xml
       lv_Vc2_location := 'DBMS_XMLGEN.getXML';
       p_XmlResult := DBMS_XMLGen.getXML(lv_queryCtx);

1 个答案:

答案 0 :(得分:0)

如果DBMS_XMLGen.getXML的输出为null,我最终只是返回一个预构建的XML:

   IF p_XmlResult IS NULL THEN
        p_XmlResult := '<USER_LIST>the rest of the XSLT structure is here...</USER_LIST>';
   END IF;