Al importar los esquemas de un procedimiento almacenado que retorna un weak ref cursor, el adaptador de Oracle genera un esquema “genrecordrow” y “genrecordcolumns, en lugar de un conjunto de resultados con tipo. Este tipo de mensajes son muy complejos de manejar, por lo cual se requiere realizar una transformación que permita identificar la información retornada por el ref-cursor directamente.
Para realizar la transformación del mensaje existen diferentes opciones, a continuación un ejemplo donde se hace uso de los functoids Iteration, Record Count, Scripting y Less Than or Equal To.
En el ejemplo se utilizará el functoid Iteration para recorrer el conjunto de datos GenRecordRow, este conjunto se recorrerá hasta llegar a la posición del último registro, este valor se calculará con el functoid Record Count, posteriormente se utilizará el functoid Less Than or Equal To, para establecer la condición de las iteraciones, la cual debe ser menor o igual al total de filas o conjunto de datos GenRecordRow, finalmente se usará el functoid Scripting, para realizar la transformación de los datos a través de XSLT.
XML de entrada: Corresponde a la información retornada en el ref cursor
1. Crear el esquema empleados:
2. Crear el mapa para realizar la transformación de la estructura genérica al esquema de empleados:
3. Adicionar al mapa los functoids Iteration y Record Count, para recorrer y contar las filas genrecordrow.
4. Adicionar al mapa el functoid Less Than or Equal To, para establecer el limite o total de iteraciones. El functoid Iteration retorna el índice de la iteración y el functoid Record Count el total de registros GenRecordRow, donde estas dos salidas deben ser las entradas de la condición: Indice actual <= total de registros.
5. Adicionar al mapa el functoid Scripting, el cual debe recibir como parámetro el índice de la iteración, para consultar solamente las columnas correspondientes a la fila del índice recibido.
6. Configurar el Scripting, utilizando el tipo de Script Inline XSLT Call Template, para realizar la transformación al esquema destino.
7. Finalmente probar el mapa, y verificar que el XML de salida sea el correcto: