繁体   English   中英

使用XMLTable读取XMLTYPE

[英]reading XMLTYPE using XMLTable

好的,所以我在PLSQL中有一个问题,查询返回字面0行:

select xt.CRN
 from xml_table x, XMLTable('/IE599/PotwierdzenieWywozu'
   passing x.xml_value
   columns
   CRN varchar2(100) PATH '@CRN' ) xt
   where x.id_xml=19740 

Xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<IE599 xmlns="http://www.mf.gov.pl/xsd/ECS/IE599_v1-0.xsd" EmailPodmiotu="xxx@xxxxxx.com" NrWlasny="xxxxx-1674661">
    <PotwierdzenieWywozu CRN="xxxxxxx-27564" DataPrzyjecia="2018-07-31T15:20:48" DataWyprowadzenia="xxxx-24" DataZwolnienia="xxxx-07-xxxx:51:20" DokumentyAlternatywne="0" Kontenery="1" KrajPrzeznaczenia="xxxx" KrajWysylki="xxxx" LiczbaOpakowan="xxxx" LiczbaPozycji="1" MRN="xxxxxxxxxxxxxx" MasaBrutto="453.680" NrWlasny="xxxxxx-xxxxx" OdprawaScentralizowana="0" P1a="EX" P1b="A" Tranzyt="0" UCWyprowadzenia="xxxxx" UCWywozu="xxxxxxx">
        <Nadawca EORI="xxxxxx" KodPocztowy="62-045" Kraj="PL" Miejscowosc="xxxxx" Nazwa="xxxxxx SP. ZO.O" TIN="xxxxxx" UlicaNumer="UL.xxxxx xx" />
        <Odbiorca KodPocztowy="xxxxx 1M8" Kraj="CA" Miejscowosc="xxxxx ST xxxxx" Nazwa="xxxxxx xxxxx - VILLE ST-LAURENT" UlicaNumer="xxxxx xxxxx xxxxxx" />
        <ZglaszajacyPrzedstawiciel EORI="PL527020362600000" KodPocztowy="05-090" Kraj="PL" Miejscowosc="xxxxx" Nazwa="xxxxx DISTRIBUTION SERVICES" Przedstawicielstwo="3" Regon="xxxxxxxx" TIN="xxxxxxx" UlicaNumer="xxxxx xxxxxx" />
        <TransportWewnetrzny Rodzaj="3" Znaki="HLXU8495377" />
        <TransportNaGranicy Kraj="PL" Rodzaj="1" Znaki="STATEK" />
        <Lokalizacja Miejsce="xxxxxx" />
        <WarunkiDostawy Kod="xxxxx" Miejsce="xxxxxx" MiejsceKod="1" />
        <Transakcja Rodzaj="11" Wartosc="4130.00" />
        <Towar KodTaric="00" KodTowarowy="xxxxxxx" MasaNetto="453.680" Nr="1" OpisTowaru="xxxxxxxx[14szt.]" ProceduraPoprzednia="00" ProceduraWnioskowana="10">
            <Opakowanie LiczbaSztuk="14" Rodzaj="NE" />
            <Kontener Nr="xxxxxxxx" />
            <KodDodatkowyUE Kod="4099" />
            <DokumentWymagany Kod="xx" Nr="xxxxxxx" />
            <InformacjaDodatkowa Kod="30200" />
            <WartoscTowaru WartoscStatystyczna="4212.00">
                <Korekta Kod="1STW" Wartosc="82.10" />
            </WartoscTowaru>
        </Towar>
        <WynikKontroli Kod="A3" Termin="2018-10-29" />
        <MiejsceData Data="2018-07-31" Miejsce="xxxxxx xxxxxx" NazwiskoImie="xxxxxx xxxxxxx" Stanowisko="xxxxxx d/s xxxxxx" Telefon="xx xxx xx xx" />
        <WynikKontroliGr Kod="A2" />
    </PotwierdzenieWywozu>
</IE599>

那么我可能做错了什么? 我尝试了几种选择,例如添加(@和/)或将其从Path中删除,但没有任何工作如我所愿...

解决此问题的方法是向XMLTABLE添加名称空间,因此代码:

select xt.CRN
 from xml_table x, XMLTable('/IE599/PotwierdzenieWywozu'
   passing x.xml_value
   columns
   CRN varchar2(100) PATH '@CRN' ) xt
   where x.id_xml=19740 

应该是这样的:

select xt.CRN
 from xml_table x, XMLTable('declare default element namespace "http://www.mf.gov.pl/xsd/ECS/IE599_v1-0.xsd";/IE599/PotwierdzenieWywozu'
   passing x.xml_value
   columns
   CRN varchar2(100) PATH '@CRN' ) xt
   where x.id_xml=19740 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM