如何在 Oracle 中生成 xml 空值?
Posted
技术标签:
【中文标题】如何在 Oracle 中生成 xml 空值?【英文标题】:How to generate xml null values in Oracle? 【发布时间】:2016-11-14 13:27:24 【问题描述】:我是通过plsql
生成XML
的新手。如何使用null
值生成XML
?
我需要下面的输出。
DealUserDescription i:nil="true"/
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于如何在 Oracle 中生成 xml 空值?的主要内容,如果未能解决你的问题,请参考以下文章