Oracle
 sql >> Base de données >  >> RDS >> Oracle

Impossible d'extraire la valeur XML d'Oracle CBLOB

L'extract() la fonction est obsolète . Il est préférable d'utiliser XMLQuery() .

Vous devez soit déclarer un espace de noms par défaut correspondant à celui du document 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

ou (plus simple mais moins robuste) utilisez un joker :

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

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

db<>violon montrant vos requêtes d'origine et les deux, en utilisant un CTE pour fournir l'exemple de valeur CLOB.