Esiste un limite di dimensione per il testo SQL in una PeopleSoft App Engine SQL Passo / azione?

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

Domanda

sto ottenendo il seguente errore: AeSymResolveStatement [775] ... Errore di Meta-SQL in corrispondenza o vicino alla posizione 34338 nella dichiarazione (108.512). L'istruzione SQL in sé è lunga oltre 40.000 caratteri, quindi la questione.

Il DB è Oracle. In esecuzione su Strumenti 8.49.24.

È stato utile?

Soluzione

Non esiste limite.

È possibile confermare da soli con la creazione di uno SQL come:

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

Anche se fa pside piuttosto lento, fa risparmiare e convalida bene.

Altri suggerimenti

So che c'è un limite alla dimensione del SQL utilizzata in un'applicazione Engine (SQL Step). Avevo una volta ha ricevuto un simile errore durante il tentativo di utilizzare un eccezionalmente lunga SQL in un motore di applicazione.

Non sarei sorpreso se lo stesso limite si applica a SQL oggetti.

Per risolvere il problema, sono stato in grado di dividere lo SQL in 2 (era un'istruzione di aggiornamento). Speriamo che sia possibile nel tuo caso pure.

Ci sono dei limiti all'interno PeopleCode, in gran parte a causa dei limiti di lunghezza della stringa, ma non ho mai trovato un limite istruzioni SQL memorizzati.

Personalmente mi piacerebbe guardare a rompere la dichiarazione in pezzi, in qualche modo.

Si potrebbe:

  • Utilizzando il meccanismo di loop integrato di motori App
  • utilizzare una miscela di SQL e PeopleCode
  • Utilizzare una tabella temporanea ed eseguire SQLs intermedi, memorizzare nella tabella temp

Oltre a dare il vostro database di un attacco di cuore, non la menzione DBA quando vede l'affermazione nel monitor SQL. Si salva te stesso un mondo di dolore se mai deve guardare la dichiarazione di nuovo.

Credo che le SQLs nei motori di app vengono memorizzate come anela, quindi sarebbe 4GB sotto Oracle, qualcosa di altrettanto enorme sotto DB2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top