thianolima, acompanhando a solução que deu para este caso tenho que confessar que não vejo o menor sentido nisso.
A função NVL vai utlizar o segundo valor passado como parâmetro, quando o primeiro for nulo.
Se o primeiro valor fosse nulo (pra estar funcionando a nvl), não seria necessário utilizá-la em primeiro lugar.
Infelizmente também não consigo sugerir nenhuma solução provável para o seu problema, pois parece estar tudo certo.
O que posso sugerir é que faça alguns testes para tentar identificar a origem do problema:
- Rode essa query diretamente no Sql’plus (ou seu client Oracle) passando null;
- Rode essa query com o valor null diretamente na query, sem utilizar o ? e setNull;
- Rode essa query sem incluir o campo ARE_RECNO na query;
- Crie uma outra tabela a parte do sistema e verifique se ocorre o mesmo problema;
Com esse tipo de testes, eu tentaria determinar exatamente quem está fazendo algo errado na história.
Pode ser a versão de driver jdbc, pode ser alguma trigger do Oracle, alguma constraint de valor default. etc.
De minha parte posso assegurar que tenho sistemas rodando com essa combinação java+oracle+setNull e funciona normalmente.
As vezes as soluções são mais simples do que pensamos.
EDIT: Desculpe, só vi sua resposta depois de ter mandado a minha.
Como eu disse, era mais simples do que pensamos.