2010-07-26 3 views

Répondre

2

Je suis assez sûr que vous ne pouvez pas. Selon cette page en bas, il y a une erreur. Être une API, c'est à eux de décider.

http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_soql_select.htm

déclarations de SOQL ne peut pas dépasser 10.000 caractères. Pour les instructions SOQL qui dépassent cette longueur maximale, l'API renvoie un code d'exception MALFORMED_QUERY ; aucune ligne de résultat n'est renvoyée.

+0

ya .. c'est un problème c'est pourquoi je demande une alternative .. – Priya

+1

oui, vous ne pouvez pas. Essayez de diviser le select en 2 requêtes? Peut-être que si nous savions ce que vous essayez d'atteindre, nous pouvons fournir une meilleure solution. – eyescream

0

Voici ce que je ferais ....

i ont 2 queres dans ma fonction première il suffit de tirer ids de la table X, puis utiliser ces IDS secondes dans WHERE clause IN.

Maintenant, si la première requête renvoie plus de 526 IDS (10 000/19 = 526 - longueurs d'ID est 18 + virgule) et je les utilise dans la deuxième requête alors il va lancer une erreur.

Ce que je peux faire est de vérifier le # IDS retourné et les exécuter en lots de 500 ou alors la taille de la requête sera toujours inférieure à 10 k.

L'autre problème est que si vous tirez plus de 6000 IDS, vous devrez exécuter plus de 100 SOQL et atteindre une autre limite de gouverneur. Mais si vous êtes sûr que le retour d'IDS à partir du premier SOQL est inférieur à 6k, cela fonctionnera pour vous.

Une autre option consiste à utiliser une requête interne dans de tels cas.

Questions connexes