首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oracle中生成xml空值?

如何在Oracle中生成xml空值?
EN

Stack Overflow用户
提问于 2016-11-14 13:27:24
回答 1查看 624关注 0票数 1

我是新一代的XML通过plsql.How可以用null值生成XML吗?我要求低于产出。

DealUserDescription i:nil=“真”/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-15 17:32:29

函数用于创建nil xml元素,我确信它可以得到改进:

代码语言:javascript
复制
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脚本:

代码语言:javascript
复制
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;
/

脚本输出如下:

代码语言:javascript
复制
<root>
  <node>nodevalue</node>
</root>

<root>
  <node xmlns:i="default" i:nil="true"/>
</root>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40589876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档