Oracle
 sql >> Database >  >> RDS >> Oracle

Impossibile estrarre il valore XML da Oracle CBLOB

Il extract() la funzione è obsoleta . È meglio usare XMLQuery() .

Devi dichiarare uno spazio dei nomi predefinito che corrisponda a quello nel documento XML:

select XMLQuery('
    declare default element namespace 
      "http://schemas.datacontract.org/2004/07/LCC.Crew.FAReserves.wsvc.Entities.FAReserves"; (: :)
    /Bid/BidName/text()'
  passing XMLType(xmlbidcontent)
  returning content) as BidName
from employeebids
where EmployeeBidID = 100;

BIDNAME                                                                         
--------------------------------------------------------------------------------
BAC

oppure (più semplice ma meno robusto) usa un carattere jolly:

select XMLQuery('/*:Bid/*:BidName/text()'
  passing XMLType(xmlbidcontent)
  returning content) as BidName
from employeebids
where EmployeeBidID = 100;

BIDNAME                                                                         
--------------------------------------------------------------------------------
BAC

db<>violino mostrando le tue query originali ed entrambe, utilizzando un CTE per fornire il valore CLOB di esempio.