如何在 Oracle 中生成 xml null 值? [英] How to generate xml null values in Oracle?

查看:41
本文介绍了如何在 Oracle 中生成 xml null 值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是通过 plsql 生成 XML 的新手.如何使用 null 值生成 XML?我需要以下输出.

I'm new for XML generation through plsql.How can generate XML using null values? I required below output.

DealUserDescription i:nil="true"/

DealUserDescription i:nil="true"/

推荐答案

创建 nil xml 元素的功能,我相信它可以改进:

Function for creating nil xml element, i'm sure it can be improved:

create function add_xml_element(
  p_name in varchar2,
  p_value in varchar2,
  p_namespaces in varchar2 default null,
  p_nil_prefix in varchar2 default null,
  p_nil_namespace in varchar2 default null) return XMLType is

  l_result XMLType;
begin
  if p_value is not null then
    l_result := XMLType('<' || p_name || ' ' || p_namespaces || '>'||p_value||'</' || p_name || '>');
  elsif p_nil_prefix is not null and p_nil_namespace is not null then
    l_result := XMLType('<' || p_name || ' ' || p_namespaces || ' ' || p_nil_namespace || ' ' || p_nil_prefix || ':nil="true"/>');
  else
    raise_application_error(-20001, 'Nil prefix or namespace not provided');
  end if;

  return l_result;
end;

和plsql脚本来测试它:

and plsql script to test it:

declare
  l_xml xmlType;

  cursor c_build_xml(cp_value in varchar2) is
    select
      xmlElement("root",
        add_xml_element(
          'node',
          cp_value,
          null,
          'i',
          'xmlns:i="default"'))
    from
      dual;
begin
  open c_build_xml('nodevalue');
  fetch c_build_xml
    into l_xml;
  close c_build_xml;

  dbms_output.put_line(l_xml.getClobVal());

  open c_build_xml(null);
  fetch c_build_xml
    into l_xml;
  close c_build_xml;

  dbms_output.put_line(l_xml.getClobVal());
end;
/

脚本输出如下:

<root>
  <node>nodevalue</node>
</root>

<root>
  <node xmlns:i="default" i:nil="true"/>
</root>

这篇关于如何在 Oracle 中生成 xml null 值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆