Criar função no Java para comando SQL

6 respostas Resolvido
java
Brunoo_1

Olá galera!!

Estou tendo um problema em uma aplicação web de um select feito em banco de dados Oracle em uma aplicação web em que a quantidade de itens no IN desse select dá erro devido o mesmo conter mais de mil registros.
SELECT … IN (‘1’, ‘2’, ‘3’…‘1000’)

O Oracle não aceita mais de mil registros no IN e por isso acabo tendo problema.

Que tipo de função no Java podemos crair para poder resolver este problema?

Obrigado

6 Respostas

darlan_machado

O problema não é no java, não é mesmo?
Que tal quebrar em partes de, no máximo, 1000 e juntar os resultados com union?

Brunoo_1

O problema não é no java, mas pensei em criar uma função em Java para fazer tratamento disso, porque o Oracle não aceita mais de 1000 registros, e também existe uma variável dentro do select chamado de campoid.

Segue abaixo o cenário:

public class DelecaoSS {
private String campoid;

[…outros comandos…]

query.setLength(0);

query.append(" SELECT LS.OIDFIELDSET, LI.OIDRADIOSET, LS.OIDCHECKSET,

LS.IDOBJECT, LS.CDSLACONTROL, LS.OIDRADIOSETREG “);

query.append(” 	FROM OIDOVERSET LS LEFT OUTER JOIN OIDBUTTONSET  LI ON

(LI.OIDFIELDSET = LS.OIDFIELDSET) “);

query.append(”	WHERE LS.OIDOUTTERSET IN (" + this.campoid + ") ");

}

Se der pra resolver com Union, como que ficaria?

Obrigado

darlan_machado

Fica parecido, apenas que você vai tratar e, a cada 999 itens dentro da cláusula in, você cria uma nova consulta. A questão é você quebrar esse campoId em partes e, a partir daí, definir esta estratégia de repetir.

Brunoo_1

Como que eu poderia resolver isso? Pelo java ou sql?

darlan_machado
Solucao aceita

Pelo que entendi, teu campoId é uma String onde constam os mais de 1000 elementos que estão sendo colocados nesta cláusula, não?
Então, é no java, né?

Brunoo_1

ok obrigado

Criado 25 de maio de 2018
Ultima resposta 25 de mai. de 2018
Respostas 6
Participantes 2