PDA

Ver la Versión Completa : Limite de espacio en un stored procedure??


ALMERA
03-07-2003, 20:02:44
¿hay un limite de espacio de código a la hora de hacer un procedimiento almacenado?

sospecho que si, ya que he echo uno enormemente grande y me da el siguiente error :
"Invalid request blr at offset 27165"
uso firebird 1.5.

La cosa es que quito unas 10 lineas y ya no da el error, por eso sospecho lo del limite.


Si es así que solución hay???

que no sea la de meter parte del codigo en otro procedimiento almacenado y meterlo en el general como llamada, que esta solución me parece bastante obvia pero coñazo al mismo tiempo, a ver si alguién sabe otra mejor.


Muchas gracias de antemano a todos, no solo al que conteste también al que se digne a leerlo.

guillotmarc
03-07-2003, 20:35:19
Hola.

En esta misma, en la sección Interbase tienes un artículo con las especificaciones de los limites de Interbase / Firebird.

Parece ser que efectivamente, los procedimientos almacenados están limitados a 48 kb de código compilado (código BLR). Por lo que, o simplificas el procedimiento, o vas a tener que pasar parte del código a otro procedimiento, llamandolo desde el primero (como comentabas).

NOTA : Personalmente no me gusta tener rutinas muy grandes, en estos casos prefiero separarlo en distintos procedimientos, y llamarlos desde el procedimiento principal, donde está el flujo de ejecución del algoritmo.

Saludos.

jachguate
04-07-2003, 02:45:07
Oye... ya 48KB de blr es bastante.... me parece que estas tratando de hacer demasiadas cosas en un mismo lugar.... te recomiendo que revises tu diseño.

Yo por lo general acepto procedimientos de no mas de 25 líneas de código (unos 0.5k a lo sumo), salvo que sea realmente imposible dividirlo.

Además, tener procedimientos pequeños y específicos es parte de un buen diseño, una alta generalización de la aplicación y favorece la reutilización del código.

Hasta luego.

;)

Iván
04-07-2003, 10:08:44
A pesar de que se que a veces es necesario hacer unos procedimientos un poco más largos de 100 líneas, la verdad es que me parece bastante serio llegar a usar 48KB.

Yo de ti revisaría el procedimiento e intentaría estructurarlo un poco más.

Un saludo.