usar license licencia instalar developer configurar conectar con como xml plsql plsqldeveloper

license - PLSQL valor de lectura de XML?



pl sql developer tnsnames (2)

Tengo una cadena con código XML, quiero extraer un valor de PL / SQL a una variable.

El XML es muy simple y no será diferente a esto:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <SOAProxyResponse xmlns="http://tempuri.org/"> <SOAProxyResult> There is 23142 Files! </SOAProxyResult> </SOAProxyResponse> </s:Body> </s:Envelope

Cómo puedo obtener el valor "¡ Hay 23142 archivos! " En el ejemplo anterior en una variable?



Puede usar la función EXTRACTVALUE para obtener este valor. Esta función toma dos o tres parámetros:

  • un objeto XMLTYPE que contiene un documento XML.
  • una expresión XPath que identifica en qué lugar del XML está el valor que queremos.
  • (opcional) una cadena adicional que vincula prefijos de espacio de nombres a URI.

En la siguiente consulta, tomé el XML que presentó arriba como una cadena y he creado un objeto XMLTYPE a partir de él. Luego uso EXTRACTVALUE para obtener el valor que solicitó:

SELECT EXTRACTVALUE(XMLTYPE( ''<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <SOAProxyResponse xmlns="http://tempuri.org/"> <SOAProxyResult> There is 23142 Files! </SOAProxyResult> </SOAProxyResponse> </s:Body> </s:Envelope>''), ''//SOAProxyResult'', ''xmlns="http://tempuri.org/"'') AS result FROM dual;

La expresión XPath //SOAProxyResult simplemente devuelve todos los elementos SOAProxyResult en el documento. El tercer argumento para EXTRACTVALUE vincula el espacio de nombres predeterminado a http://tempuri.org/ . Esto es necesario porque el elemento SOAProxyResult en su documento XML se encuentra dentro de este espacio de nombres.

Si ejecuto esta consulta, obtengo el siguiente resultado:

RESULT -------------------------------------------------------------------------------- There is 23142 Files!

A partir de aquí, debería ser una modificación trivial para poner el resultado de esta consulta en una variable.