我在Oracle 11中有以下代码:
select xmlelement("foo", xmlagg(xmlelement("bar",myValues))) from someTable where rownum = 0; --Changing the rownum from 0 should give me values
目前的输出是:<foo></foo>
我希望在没有选择任何行时返回任何内容,或者返回null。否则它将是一个带有聚合数据的XMLtype,就像我上面的那样。
如果没有选择任何行,我将如何实现这一目标?
答案 0 :(得分:1)
您可以使用CLOB
功能转换为getClobval
并进行比较。
SELECT
xml
FROM
(
SELECT
xmlelement("foo",xmlagg(xmlelement("bar",myvalues) ) ).getclobval() xml
FROM
sometable
)
WHERE
TO_CHAR(xml) != '<foo></foo>';
答案 1 :(得分:1)
您可以使用案例选择:
select case when count (*) != 0 then xmlelement("foo", xmlagg(xmlelement("bar",myValues))) end