2010-11-30 12 views
5

¿Cómo puedo obtener Oracle XMLElement en JDBC?Java: Oracle XMLType + JDBC

java.sql.Statement st = connection.createStatement(); // works 
oracle.jdbc.OracleResultSet rs = st.execute("SELECT XMLElement("name") FROM dual"); 
rs.getString(1); // returns null, why? 
oracle.sql.OPAQUE = (OPAQUE) rs.getObject(1); // this works, but wtf is OPAQUE ? 

Básicamente, quiero leer cadena como <name> </name> o lo que sea con formato XML de salida. Pero siempre fallo en proyectar mi producción a algo razonable. Solo funciona el raro oracle.sql.OPAQUE, pero no sé qué hacer con eso. ¡Incluso toString() no se anula!

¿Alguna idea? ¿Cómo leer Oracle (estoy usando Oracle 10.0.2) XMLElement (XMLType)?

Respuesta

10

No puede. El controlador JDBC de Oracle no admite el tipo XML JDBC correctamente.

La única cosa que puede hacer, es convertir el XML como parte de la consulta:

 
SELECT to_clob(XMLElement("name")) from dual 

A continuación, se puede recuperar el XML usando getString()

Alternativamente, también puede utilizar XMLElement("name").getClobVal(), pero de nuevo esto es parte de su consulta y se puede acceder como una cadena desde dentro de su clase Java

+0

en TO_CLOB SELECT (XMLElement ("nombre")) de la doble sigo recibiendo ORA -1652: no se puede extender el segmento de temperatura en 128 en el espacio de tabla temp – Xorty

+0

Debe ser algo con su instalación. Funciona bien para mí (11.1.0.6). ¿Has probado la versión getClobVal()? –

+0

No, ¿qué instancia debo usar? – Xorty

1

ORA-1652: no se puede ampliar el segmento temporal por 128 en la temperatura de tablas es una error totalmente diferente, nada que ver con XMLElement.

Es sólo que hava para establecer su archivo temporal a cambio de tamaño automático o darle un tamaño más grande:

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/product/10.2.0/db_1/oradata/oracle/temp01.dbf' SIZE 10M AUTOEXTEND ON 

ALTER DATABASE TEMPFILE '/u01/app/oracle/product/10.2.0/db_1/oradata/oracle/temp01.dbf' RESIZE 200M 
+2

¿Cómo se relaciona esto con la pregunta? –

Cuestiones relacionadas