Falae pessoal...
To com um problema estranho aqui, já procurei por tudo e não encontrei solução.
O problema é o seguinte.
Tenho um processo java que, dependendo do tipo de dado que ele receber, executa uma procedure específica da seguinte forma:
Se o dado for uma variavel de SERVIÇO//Tipo de dado que a procedure recebe
CALL V1_INS_SERVDATA ( INTEGER, INTEGER, VARCHAR(251), TIMESTAMP, INTEGER, VARCHAR(251) )
//Exemplo de chamada a procedure
CALL V1_INS_SERVDATA ( 36566, 64963, 'Servico_PING', '2012-04-30 14:11:12',0, 'PING OK - Packet loss = 0%, RTA = 0.15 ms' )
//Tipo de dado que a procedure recebe
CALL V7_INS_COLDATA ( INTEGER, INTEGER, VARCHAR(251), VARCHAR (251), TIMESTAMP, INTEGER, INTEGER, VARCHAR (128), DOUBLE, VARCHAR (15), VARCHAR (251), VARCHAR (15), VARCHAR (250), VARCHAR (15), INTEGER )
//Exemplo de chamada a procedure
CALL V7_INS_COLDATA ( 10779, 1940, 'Utilizacao_Cpu', 'EXPRESSION','2012-04-30 14:11:42', [telefone removido], [telefone removido], '0', 4.0, null, '192.168.163.30', '192.168.163.30', '192.168.163.28', '192.168.163.179', 5 )
preStatement.addBatch();
preStatement.executeBatch();
com.ibm.db2.jcc.a.ge: Non-atomic batch failure. The batch was submitted, but at least one exception occurred on an individual member of the batch. Use getNextException() to retrieve the exceptions for specific batched elements.
at com.ibm.db2.jcc.a.j.a(j.java:397)
at com.ibm.db2.jcc.a.id.b(id.java:2935)
at com.ibm.db2.jcc.a.id.a(id.java:2704)
at com.ibm.db2.jcc.a.id.executeBatch(id.java:2516)
at com.ibm.db2.jcc.a.id.executeBatch(id.java:1348)
at br.com.empresa.export.InsereBanco.insereBancoBatch(InsereBanco.java:313)
at br.com.empresa.export.InsereBanco.verificaDados(InsereBanco.java:71)
at br.com.empresa.export.InsereBanco.run(InsereBanco.java:551)
at java.lang.Thread.run(Thread.java:595)
2012-04-30 15:57:05,184 RROR [ead-6] InsereBanco () - getNextException:
com.ibm.db2.jcc.a.SqlException: Error for batch element #0: DB2 SQL error: SQLCODE: -301, SQLSTATE: 07006, SQLERRMC: 9
at com.ibm.db2.jcc.a.hd.d(hd.java:1392)
at com.ibm.db2.jcc.c.jb.l(jb.java:366)
at com.ibm.db2.jcc.c.jb.e(jb.java:102)
at com.ibm.db2.jcc.c.w.e(w.java:72)
at com.ibm.db2.jcc.c.cc.i(cc.java:202)
at com.ibm.db2.jcc.a.hd.q(hd.java:1359)
at com.ibm.db2.jcc.a.id.b(id.java:2891)
at com.ibm.db2.jcc.a.id.a(id.java:2704)
at com.ibm.db2.jcc.a.id.executeBatch(id.java:2516)
at com.ibm.db2.jcc.a.id.executeBatch(id.java:1348)
at br.com.empresa.export.InsereBanco.insereBancoBatch(InsereBanco.java:313)
at br.com.empresa.export.InsereBanco.verificaDados(InsereBanco.java:71)
at br.com.empresa.export.InsereBanco.run(InsereBanco.java:551)
at java.lang.Thread.run(Thread.java:595)
Já executei todas as chamadas que o processo faz á procedure direto no banco e todas funcionam.
Quando eu comento a chamada da procedure V7_INS_COLDATA o batch funciona normalmente com as chamadas à procedure V1_INS_SERVDATA, porém o contrário não ocorre, se comentar a procedure de serviço e deixar somente a de desempenho, a mesma não funciona no batch.
Se eu executar as chamadas à procedure sem adicionar no batch, chamar com o execute, funciona perfeitamente também.
Resumindo, se eu adicionar a procedure V7 no batch da problema, se não adicionar tudo funciona.
Alguém tem alguma idéia do que pode ser isso?
Valeu e abraços