当sql表为空时,dbms_xmlgen.getxmltype(context)返回null

时间:2014-09-11 14:41:31

标签: sql xml database oracle

我有以下函数将表数据转换为XML。但是,只要表数据为null,结果XML就为null。我希望它在空表数据的情况下添加列名。 我应该在这个功能中做些什么改变。

function XmlToBlob(p_query varchar2) return blob is 
  ctx         dbms_xmlgen.ctxhandle;
  xml         xmltype;
  resultBlob  blob; 
begin
  ctx := dbms_xmlgen.newcontext(p_query);
  dbms_xmlgen.setNullHandling(ctx, dbms_xmlgen.empty_tag);
  xml := dbms_xmlgen.getxmltype(ctx);
  if (xml is not null) then
    resultBlob := xml.getBlobVal(NLS_CHARSET_ID('AL32UTF8'));
  else
    resultBlob := null;
  end if;
  return resultBlob;
end;

1 个答案:

答案 0 :(得分:1)

如果无法检索到其他数据,则应更改查询,以便返回单行空值。

试试这个:

FOR ORACLE:

select emp.*
from   dual
left   join emp on ( 1 = 1 )

FOR MSSQL SERVER:

select t.*
from (select 1 as adummy) a
left join (select * from emp ) t on 1=1