Exception Java Oracle - "le nombre maximal d'expressions dans une liste est de 1000"
Je suis de passage d'une liste de Chaînes à ma requête SQL(requête écrite) afin d'extraire les données requises.
Mais j'obtiens cette exception:
ora-01795 nombre maximum d'expressions dans une liste est de 1000
J'ai vérifié que j'ai plus de 1000 entrées dans la liste transmise à la requête EN paramètre.
source d'informationauteur Anand
Vous devez vous connecter pour publier un commentaire.
c'est un oracle de limitation dans le nombre de la liste passe dans la requête.
Vous ne pouvez pas avoir une liste de plus de 1000 éléments dans un seul "où" l'état, si vous êtes travailler avec Oracle DB. Ainsi, vous pouvez abattre votre condition "where" à plusieurs", où" les conditions et les joindre avec "ou" clause.
Si vous êtes en utilisant hibernate Critères, vous pouvez utiliser Java ci-dessous la méthode pour ce faire.
Il suffit de remplacer votre code à l'endroit où vous avez utilisé
avec
laquelle la méthode est :
J'ai résolu ce problème par la rupture de la liste en lots de taille 1000 et la joindre à l'aide de OU.
par exemple
eid[] tableau des identifiants.
Si je veux exécuter cette requête,
J'ai ré-écrit cette requête par écrit un petit morceau de code:
Traiter avec ce message d'erreur lors de l'utilisation d'hibernate, vous avez à s'attaquer à ce problème en coupant la liste en lot de 100, puis à joindre les résultats individuels (comme indiqué dans la requête ci-dessus).
Je ne pense pas que c'est une limitation de hibernate pour ne pas traiter de cette question, car il se peut que cette question n'est pas un cas d'une autre base de données comme MySQL ou DB2. Hibernate est un cross-DB ORM.
vous pouvez créer une table temporaire, et insérer les valeurs que vous souhaitez utiliser dans votre
IN
déclaration, et rejoindre la table temporaire avec votre vraie table. plus d'informations sur les tables temporaires.De dba-oracle.com:
Si vous êtes en mesure de convertir votre base de données logique à partir d'une requête dans une procédure stockée, puis vous pouvez passer plus de tableaux (les collections).
Ici vous trouverez un bref exemple de comment le faire. Le lien vers la documentation n'est pas à jour, donc voici un lien vers la 9i docs http://docs.oracle.com/cd/B10500_01/java.920/a96654/oraarr.htm#1040124
et le SQL partie