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
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?
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
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.
Como que eu poderia resolver isso? Pelo java ou sql?
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é?