Olá.
Estou desenvolvendo um sistema integrador que realiza queries a partir de informações contidas em um arquivo texto.
O sistema inicia normalmente, faz os selects dentro do for mas em um determinado momento, recebo o seguinte erro:
java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000
Em pesquisas anteriores, pude verificar que o erro acontece quando se insere um valor acima de 1000 na condição. Mas com certeza não tenho mais de 1000 parametros na consulta do NOT IN.
Fiz a mesma execução no client SQL Developer e o problema não acontece.
Pode ser algum armazenamento interno que o java esta fazendo quando executo as queries?
Segue a query reduzida:
SELECT P.POLICYNAME, AV.ATTRIBUTE_VALUE
FROM POLICIES P JOIN POLICY_ATTRIBUTES PA ON P.POLICYKEY=PA.POLICY_ID
JOIN POLICY_ATTR_HIER_NODES PAHN ON PA.POLICY_ATTR_HIER_ID=PAHN.ID
JOIN ATTRIBUTE_VALUES AV ON PAHN.ATTRIBUTE_VALUE_ID=AV.ID
JOIN ATTRIBUTES ATT ON AV.ATTRIBUTE_ID=ATT.ATTRIBUTEKEY
JOIN ATTRIBUTECATEGORIES AC ON ATT.ATTRIBUTECATEGORYKEY=AC.ATTRIBUTECATEGORYKEY
JOIN NAMESPACES N ON AC.NAMESPACEKEY=N.NAMESPACEKEY
where PA.POLICY_VERSION_ID = P.CURRENT_VERSION_ID AND n.namespacename = 'APP' AND p.policyname = 'PERFIL1'
AND AV.ATTRIBUTE_VALUE NOT IN ('parametros1','parametros2','parametros3','parametros4','parametros5','parametros6','parametros80')
ORDER BY POLICYNAME, NAMESPACENAME
Como disse, no NOT IN estou usando somente 80 parâmetros e portanto não deveria estourar a excessão.
att.