¿Hay un límite de tamaño para el texto SQL en una aplicación SQL PeopleSoft Motor Paso / Acción?

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

Pregunta

Estoy recibiendo el siguiente error: AeSymResolveStatement [775] ... error Meta-SQL en o cerca de la posición 34338 en el estado (108.512). La sentencia SQL en sí es más de 40.000 caracteres de largo, de ahí la pregunta.

El DB es oráculo. Herramientas que se ejecuta en 8.49.24.

¿Fue útil?

Solución

No existe tal límite.

Se puede confirmar esto por sí mismo mediante la creación de un SQL como:

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

A pesar de que hace pside bastante lento, se ahorra y valida muy bien.

Otros consejos

Sé que hay un límite en el tamaño del SQL que se utiliza en un motor de aplicaciones (SQL Paso). Una vez había recibido un error similar al intentar utilizar un tiempo excepcionalmente largo de SQL en un motor de aplicación.

No me sorprendería que ese mismo límite se aplica a objetos de SQL.

Para solucionar el problema, yo era capaz de dividir el SQL en 2 (fue una instrucción de actualización). Esperemos que eso es posible en su caso también.

Hay límites dentro PeopleCode, sobre todo debido a los límites de longitud de la cadena, sin embargo nunca he encontrado un límite en las sentencias SQL almacenadas.

En lo personal me vería en partir la declaración en trozos de alguna manera.

Se podría:

  • Uso del mecanismo de bucle incorporada de la aplicación Motores
  • utilizar una mezcla de SQL y PeopleCode
  • Utilice una tabla temporal y realizar LSQ intermedios, almacenar en la tabla temporal

Además de dar a su base de datos de un ataque al corazón, no de la mención del DBA cuando ve la declaración en el monitor de SQL. Usted se está ahorrando un mundo de dolor si alguna vez tiene que leer la declaración de nuevo.

Creo que los LSQ en la aplicación motores se almacenan como largos, por lo que sería de 4 GB bajo el sistema Oracle, algo igualmente grandes bajo DB2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top