2009-11-16 1 views

Répondre

1

Il n'y a pas une telle limite.

Vous pouvez confirmer cela vous en créant un SQL comme:

select 'x' from PS_INSTALLATION where 
     1 = 1 and 
     1 = 1 and 
     1 = 1 and 
     1 = 1 and 
     /* ... copy paste '1 = 1 and' 90000 times or so times more */ 
     1 = 1 

Bien qu'il fait pside assez lent, il enregistre et valide très bien.

1

Il existe des limites dans PeopleCode, principalement en raison des limites de longueur de chaîne, mais je n'ai jamais trouvé de limite sur les instructions SQL stockées.

2

Je sais qu'il y a une limite à la taille du SQL utilisé dans un moteur d'application (étape SQL). J'avais déjà reçu une erreur similaire en essayant d'utiliser un SQL exceptionnellement long dans un moteur d'application.

Je ne serais pas surpris si cette même limite s'applique aux objets SQL.

Pour résoudre le problème, j'ai été en mesure de scinder le SQL en 2 (était une instruction de mise à jour). J'espère que c'est possible dans votre cas également.

0

Personnellement, je chercherais à briser la déclaration en morceaux d'une certaine manière.

Vous pouvez:

  • Utilisation du mécanisme de bouclage intégré de moteurs App
  • utiliser un mélange de SQL et PeopleCode
  • Utiliser une table temporaire et effectuer SQLs intermédiaires, le stockage dans la table temporaire

En plus de donner à votre base de données une saisie cardiaque, pas la mention DBA quand il voit l'instruction dans le moniteur SQL. Vous vous épargnez un monde de douleur si jamais vous deviez revoir la déclaration.

Je pense que les SQL dans les moteurs d'applications sont stockés en tant que longs, donc ce serait 4 Go sous Oracle, quelque chose d'aussi énorme sous DB2.

Questions connexes