Olá, boa tarde.
Situação:
- tenho uma consulta que me retorna uma quantidade X resultsets diferentes, com quantidade X de registros e colunas em cada um. Ex:
ResultSet 1:
coluna1 coluna2 coluna3
abc abc2 abc3
abc4 abc5 abc6
ResultSet 2:
coluna1
abc
abc2
abc3
ResultSet 3:
coluna1 coluna2 coluna3 coluna4
abc abc2 abc3 abc4
- preciso mostrar estes dados usando VTL numa página com o seguinte layout:
ResultSet1:
coluna1: abc, acb4
coluna2: abc2, abc5
coluna3: abc3, abc6
ResultSet2:
coluna1: abc, acb2, abc3
ResultSet3:
coluna1: abc
coluna2: abc2
coluna3: abc3
coluna4: abc4
Até onde fui:
Consigo pegar todo os resultsets e todas as colunas, adicionando-os num ArrayList. Consigo mostrar as colunas na ordem certa do jeito que eu preciso. Estes códigos abaixo funcionam muito bem com Consultas que retornam apenas um resultset:
sp = conn.prepareCall( storedproc );
sp.execute();
do
{
rs = sp.getResultSet();
rsmd = rs.getMetaData();
while( rs.next() )
for( int i = 1; i <= rsmd.getColumnCount(); ++i )
sRs.add( rs.getString ( i ) );
for( int i = 1; i <= rsmd.getColumnCount(); i++ )
sColumNames.add( rsmd.getColumnLabel( i ) );
} while ( ( sp.getMoreResults() ) || ( sp.getUpdateCount() != -1) );
E na página VM:
<table>
#set( $size = $colsize - 1 )
#foreach( $i in [1..$size] )
<tr>
<td>$!action.getCols( $i ):</td>
<td>$!action.getResultset( $i )</td>
</tr>
#end
</table>
Problema:
Não consigo fazer com que os registros (linhas nas colunas) fiquem respectivos às suas colunas.
O que já tentei:
Arrays bidimensionais, arraylists dentro de arraylists, galinhas pretas.
Pergunta:
Há como fazer isso que eu preciso de maneira elegante?
Infinitos obrigados a todos que chegaram até aqui 