Reutilização de preparedStatement

Bom dia pessoal, td blz??

seguinte… ontem quebrei a kbça a tarde inteira por causa de um erro que estava dando na minha aplicação…

o erro q dava era —> ORA-01000: maximum open cursors exceeded.

dei uma pesquisa no Mestre Google…heheh… e achei um monte de mail list falando sobre isso… esse erro é ocasionado quando vc não finaliza resultSets, statements ou connections, assim ele deixa em aberto muitas queries…

se vc quiserem visualizar os cursors em aberto utilizem essa query a seguir:

/*  SELECIONA TODOS OS OPEN CURSORS DE CADA MAQUINA */
SELECT v.value as numopencursors ,s.machine ,s.osuser,s.username
FROM V$SESSTAT v, V$SESSION s
WHERE v.statistic# = 3 and v.sid = s.sid
/*  SELECIONA DADOS DE CADA OPEN CURSOR  */
select user_name, status, osuser, machine, a.sql_text, c.sql_text 
from v$session b, v$open_cursor a,  V$SQLAREA c
where a.sid = b.sid
and c.address = a.address

até ai td bem… já havia descoberto o q estava ocasionando o problema…
mas o problema estava AONDE isso estava ocorrendo no meu código…

depois de horas “perdidas”… achei aonde era…
num trecho do meu código eu tenho 6 queries distintas, com 1 resultSet para cada… só q eu estava reutilizando o statement para efetuar a pesquisa de cada query… é ai q está o problema… pq quando eu fiz o teste de colocar um statement para cada resultSet, funcionou perfeitamente… não haviam mais open cursors desnecessários…

ok… eu resolvi o problema… mas não entendi o pq que eu não posso reutilizar o statement para vários resultSets…

ALGUÉM poderia me responder??

Obrigado,

Henrique

caramba… ninguém sabe ae??

já aconteceu com algum de vcs isso??

abraços

Desenterrando o post!!!

Como precisei dessas iformações e afim de deixar um posto completo… ai vai !!!

O problema não esta em reutilizar o Statement, mas sim em mantê-lo aberto.

Para resolver o problema basta vc fechar o Statement e o resultset antes de reutiliza-los.

Fui !!!