如何使用本机Oracle XML DB Web服务删除空值?

如何使用本机Oracle XML DB Web服务删除空值?,xml,web-services,oracle,oracle11g,Xml,Web Services,Oracle,Oracle11g,我使用的是原生Oracle XML DB Web服务(使用PL/SQL函数和Web服务)。 我想删除空值(在输出中不放任何内容(没有XML元素))。 它与Oracle 11.2.0.1.0配合使用,但与Oracle 11.2.0.3.0不配合使用 只是想澄清一下。。。我不想使用带有PL/SQL的web服务,我想将我的PL/SQL包/过程/函数发布为web服务 希望有人能帮助我。 多谢各位 在本例中,列“country”为空 Oracle 11.2.0.1.0(这就是我想要的): 3. 骚扰 陶

我使用的是原生Oracle XML DB Web服务(使用PL/SQL函数和Web服务)。 我想删除空值(在输出中不放任何内容(没有XML元素))。 它与Oracle 11.2.0.1.0配合使用,但与Oracle 11.2.0.3.0不配合使用

只是想澄清一下。。。我不想使用带有PL/SQL的web服务,我想将我的PL/SQL包/过程/函数发布为web服务

希望有人能帮助我。 多谢各位

在本例中,列“country”为空

Oracle 11.2.0.1.0(这就是我想要的):


3.
骚扰
陶工
Oracle 11.2.0.3.0:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GET_PERSONOutput xmlns="http://xmlns.oracle.com/orawsv/TESTSTUFF/GET_PERSON">
     <RETURN>
        <PERSON>
           <PERSON_ID>3</PERSON_ID>
           <FIRST_NAME>Harry</FIRST_NAME>
           <LAST_NAME>Potter</LAST_NAME>
           <COUNTRY/>
        </PERSON>
     </RETURN>
    </GET_PERSONOutput>
  </soap:Body>
</soap:Envelope>

3.
骚扰
陶工

使用XMLFOREST而不是XMLELEMENT将隐藏任何空数据的标记

生成所需SOAP请求的示例查询如下所示:

SELECT XMLFOREST(XMLFOREST(p.id as "PERSON_ID",
                           p.first_name as "FIRST_NAME",
                           p.last_name as "LAST_NAME",
                           p.country as "COUNTRY"
                           ) as "PERSON")
   FROM PERSON_TABLE p WHERE p.id=3
我不知道为什么,但是XMLELEMENT在XML中留下了空标记。希望这对你有用


添加:一篇关于XMLFOREST与XMLELEMENT的有用文章-

给所有有相同问题的人:

我为此问题创建了一个Oracle服务请求,Oracle支持人员说:

不存在通过程序/功能进行访问的权限。这里是WSDL 由无法指定空行为的函数定义驱动


希望这些信息对您有所帮助。

谢谢您的回答。但是,如果您使用“原生Oracle XML DB Web服务”,数据库将为您完成这些任务。您可以编写包、过程或函数,而不直接使用XMLELEMENT或XMLFOREST。以下是一篇有用的文章:
SELECT XMLFOREST(XMLFOREST(p.id as "PERSON_ID",
                           p.first_name as "FIRST_NAME",
                           p.last_name as "LAST_NAME",
                           p.country as "COUNTRY"
                           ) as "PERSON")
   FROM PERSON_TABLE p WHERE p.id=3