2015-05-04 48 views
0

Iam新XML数据库,面临问题,而写在条件时,transportEquipment的id。无法写入条件复杂类型与标签数组

我的XML是:

以下XML从数据库中取出。这个xml在transportequipment中有多个id,我们需要编写id的条件。 iam能写出wherereferencenumber和identifier等条件。但没有写在transportEquipment的“id”上,bcz在这里有很多。

<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?> 
<dms:declaration xsi:schemaLocation="http://www.minihouse.eu/myunidoc/dms/schema/dmsimport" xmlns:common="http://www.minihouse.eu/myunidoc/schema/common" xmlns:dms="http://www.minihouse.eu/myunidoc/dms/schema/dmsimport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <common:declarationHeader> 
     <common:identifier>1183798</common:identifier> 
     <common:version>3</common:version> 
     <common:kindDeclaration>DMS-IMPORT.NL</common:kindDeclaration> 
     <common:localReferenceNumber>NLDMS111111150010950</common:localReferenceNumber> 
     <common:initialUserAgent>Human</common:initialUserAgent> 
     <common:creationTime>2015-04-24T13:23:00</common:creationTime> 
     <common:organization> 
     <common:organizationId>100547</common:organizationId> 
     <common:organizationName>TestOCHercules</common:organizationName> 
     <common:line>adress2</common:line> 
     <common:streetNo>2</common:streetNo> 
     <common:city>Amsterdam</common:city> 
     <common:postalcode>1001 AA</common:postalcode> 
     <common:country>NL</common:country> 
     <common:permitNumber>NLDMS111111</common:permitNumber> 
     <common:x400Number>00</common:x400Number> 
     <common:userId>testSC</common:userId> 
     </common:organization> 
     <common:status> 
     <common:customsStatus>DRF</common:customsStatus> 
     <common:isOpen>1</common:isOpen> 
     <common:processStep>91</common:processStep> 
     <common:messageSent>1</common:messageSent> 
     <common:messageSuccess>0</common:messageSuccess> 
     <common:lastReceivedRelevantMessage>0</common:lastReceivedRelevantMessage> 
     <common:isFallBackDeclaration>0</common:isFallBackDeclaration> 
     </common:status> 
     <common:username>testSC testSC</common:username> 
    </common:declarationHeader> 
    <dms:dmsHeader></dms:dmsHeader> 
    <dms:declarationTypeCode> 
     <dms:declarationSymbol>IM</dms:declarationSymbol> 
     <dms:declarationType>B</dms:declarationType> 
    </dms:declarationTypeCode> 
    <dms:goodsShipments> 
     <dms:sequenceNumeric>1</dms:sequenceNumeric> 
     <dms:consignment sequenceNumeric="1"> 
     <dms:transportEquipment> 
      <dms:sequenceNumeric>1</dms:sequenceNumeric> 
      <dms:sealID>1234</dms:sealID> 
      <dms:id>abcd</dms:id> 
     </dms:transportEquipment> 
     <dms:transportEquipment> 
      <dms:sequenceNumeric>2</dms:sequenceNumeric> 
      <dms:sealID>2345</dms:sealID> 
      <dms:id>bcde</dms:id> 
     </dms:transportEquipment> 
     <dms:transportEquipment> 
      <dms:sequenceNumeric>3</dms:sequenceNumeric> 
      <dms:sealID>3456</dms:sealID> 
      <dms:id>cdef</dms:id> 
     </dms:transportEquipment> 
     <dms:transportEquipment> 
      <dms:sequenceNumeric>4</dms:sequenceNumeric> 
      <dms:sealID>4567</dms:sealID> 
      <dms:id>defg</dms:id> 
     </dms:transportEquipment> 
     <dms:transportEquipment> 
      <dms:sequenceNumeric>5</dms:sequenceNumeric> 
      <dms:sealID>5678</dms:sealID> 
      <dms:id>efgh</dms:id> 
     </dms:transportEquipment> 
     </dms:consignment> 
    </dms:goodsShipments> 
</dms:declaration> 

和荫无法WHERE条件添加到下面的查询

select * from (select x.id "id",x.creationTime "creationTime",x.localReferenceNumber "localReferenceNumber",x.customsStatus "customsStatus",x.messageSent "messageSent",x.messageSuccess "messageSuccess",x.processStep "processStep",x.lastReceivedRelevantMessage "lastReceivedRelevantMessage",x.isFallBackDeclaration "isFallBackDeclaration",x.declarationType "declarationType" from dmsimport_decl,xmltable(xmlnamespaces('http://www.minihouse.eu/myunidoc/schema/common' as "c",default 'http://www.minihouse.eu/myunidoc/dms/schema/dmsimport','http://www.minihouse.eu/myunidoc/dms/schema/dmsimport' as "d"),'/declaration' passing object_value columns id number(19) path 'c:declarationHeader/c:identifier/text()',creationTime timestamp path 'c:declarationHeader/c:creationTime/text()',localReferenceNumber varchar2(35 char) path 'c:declarationHeader/c:localReferenceNumber/text()',customsStatus varchar2(3) path 'c:declarationHeader/c:status/c:customsStatus/text()',messageSent number(1) path 'c:declarationHeader/c:status/c:messageSent/text()',messageSuccess number(1) path 'c:declarationHeader/c:status/c:messageSuccess/text()',processStep number(4) path 'c:declarationHeader/c:status/c:processStep/text()',lastReceivedRelevantMessage number(4) path 'c:declarationHeader/c:status/c:lastReceivedRelevantMessage/text()',isFallBackDeclaration number(1) path 'c:declarationHeader/c:status/c:isFallBackDeclaration/text()',declarationType varchar2(1) path 'declarationTypeCode/declarationType/text()',username varchar2(81) path 'c:declarationHeader/c:username/text()') x where lower(localReferenceNumber) = 'nldms12345678900' order by creationTime desc,x.localReferenceNumber desc) where rownum <= 1000

回答

0

下面的查询将有助于

SELECT * FROM XXXtabelXXX XMLTable(
XMLNAMESPACES( DEFAULT 'http://www.minihouse.eu/myunidoc/dms/schema/dmsimport', 
'http://www.minihouse.eu/myunidoc/schema/common' AS "c"), 
'/declaration' PASSING d.object_value COLUMNS 
    lrn VARCHAR2(35 CHAR) PATH 'c:declarationHeader/c:localReferenceNumber/text()', 
    declarationId VARCHAR2(35 CHAR) PATH 'c:declarationHeader/c:identifier/text()', 
    transport xmlType PATH 'goodsShipments/consignment/transportEquipment') xmlDataAlias, 
    XMLTable (XMLNAMESPACES(DEFAULT 'http://www.minihouse.eu/myunidoc/dms/schema/dmsimport'), 
    'transportEquipment' passing transport COLUMNS 
    id VARCHAR2(4 CHAR) PATH 'id') transportInfo 
WHERE transportInfo.id = 'abcd'