我正在使用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);
答案 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;