Y at-il une limite de taille pour le texte SQL dans une application PeopleSoft Engine SQL Étape / Action?

StackOverflow https://stackoverflow.com/questions/1739622

Question

Je reçois l'erreur suivante: AeSymResolveStatement [775] ... Erreur Meta-SQL ou à la position près de 34338 dans l'instruction (108512). L'instruction SQL lui-même est plus de 40.000 caractères de long, d'où la question.

Le DB est oracle. Fonctionnant sur Outils 8.49.24.

Était-ce utile?

La solution

Il n'y a pas de 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 bien.

Autres conseils

Je sais qu'il ya une limite sur la taille de SQL utilisée dans un moteur d'application (SQL étape). J'avais une fois une erreur semblable recieved tout en essayant d'utiliser un SQL exceptionnellement longue 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 pu diviser le SQL en 2 (était une déclaration de mise à jour). Espérons que cela est possible dans votre cas aussi.

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

Personnellement, je regarde la déclaration en brisant des morceaux d'une certaine façon.

Vous pouvez:

  • Utilisation du mécanisme de mise en boucle intégré de moteurs App
  • Utilisez 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 d'une crise cardiaque, et non pas la mention du DBA quand il voit l'instruction dans le moniteur SQL. Vous vous sauver un monde de douleur si jamais vous avez à regarder à nouveau la déclaration.

Je pense que les requêtes SQL dans les moteurs App sont stockées sous forme de positions longues, il serait donc 4 Go sous Oracle, quelque chose de la même énorme sous DB2.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top