2009-01-29 14 views
7

Quiero crear un procedimiento almacenado que tome el nombre de una tabla y un row_id y pueda serializarlo en una cadena xml.Serializar la fila de Oracle a XML

La tabla puede contener manchas y manchas.

¿Puedo hacer esto en PL/SQL, o tengo que usar Java?

El objetivo principal de esto es tener una tabla con todas las actualizaciones y eliminaciones en algunas mesas, manteniendo los X versiones más recientes, o X días de datos (la tabla podría incluir algo como chg_date(default:sysdate), chg_type(U or D), chg_xml, y probablemente con algunos metadatos sobre el usuario).

Posibles usos: - También podría mantener todos los datos y ser utilizado como un registro - La capacidad de devolver la fila a cualquier valor anterior. - La capacidad de hacer EDI en un formato específico.

No quiero utilizar las consultas de retroceso de Oracle para llegar allí ya que no hay garantía de disponibilidad de datos.

Respuesta

6

Oracle tiene una función para devolver una consulta en formato xml.

En este ejemplo, reemplace la tabla & con su nombre de tabla, y & rowid con rowid. Lo probé y parece funcionar con manchas y manchas. Para blobs devuelve los datos en hexadecimal.

SELECT DBMS_XMLGEN.getxmltype ('select * from &table_name where rowid = ''&rowid''') 
    FROM DUAL 
Cuestiones relacionadas