Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Não é possível extrair o valor XML do Oracle CBLOB


O extract() função está obsoleta . É melhor usar XMLQuery() .

Você precisa declarar um namespace padrão para corresponder ao do 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

ou (mais simples, mas menos robusto) use um curinga:
select XMLQuery('/*:Bid/*:BidName/text()'
  passing XMLType(xmlbidcontent)
  returning content) as BidName
from employeebids
where EmployeeBidID = 100;

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

db<>fiddle mostrando suas consultas originais e ambas, usando um CTE para fornecer o valor CLOB de amostra.