-1

Ok, so i have a problem in PLSQL that query returns literally 0 rows:

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 looks like:

<?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>

So what i may be doing wrong? I've tried several options, like adding (@ and / ) or removing it from Path, but nothing worked as i wanted it to...

Bartosz Olchowik
  • 1,129
  • 8
  • 22
  • Do not have anywhere to test it at present but my guess looking at what you have there is that it is your namespace that is causing issues. Check out the docs regarding specifying a namespace with XMLTable. – Shaun Peterson Sep 12 '18 at 06:07

1 Answers1

0

Solution for this problem is adding a namespace to XMLTABLE, so the code:

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 

Should be like:

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 
Bartosz Olchowik
  • 1,129
  • 8
  • 22