【问题标题】:How to generate xml null values in Oracle?如何在 Oracle 中生成 xml 空值?
【发布时间】:2023-03-12 17:14:01
【问题描述】:

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

DealUserDescription i:nil="true"/

【问题讨论】:

    标签: xml plsql


    【解决方案1】:

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

    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 脚本来测试它:

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2011-03-03
      • 2013-10-14
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      相关资源
      最近更新 更多