Ver Mensaje Individual
  #1  
Antiguo 06-07-2003
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Reputación: 22
mlara Va por buen camino
Referencias circulares aparentes con SPs

Hola de nuevo. Ahora entiendo bien lo del código BLR y el mensaje de error de IBConsole. Había comentado que tenía una solución, la puse en práctica y todo funcionó muy bien, pero siempre sucede algo nuevo, como lo que les voy a contar:

Supongamos que tengo el SP1 y el SP2.

1. El SP1 evalúa uno de sus parámetros (un código) y devuelve el valor calculado.

2. El SP2 evalúa una expresión matemática, pero en la cual algunos de los términos son códigos.

Ahora, veamos:

Ejecuto el SP1 pasándole como parámetro el código X, y él mismo determina que el código X que debe evaluar es de tipo fórmula, por lo cual llama a SP2.

El SP2 recorre los términos de la expresión correspondiente al código X. Luego, cuando encuentra un código Z en dicha expresión, llama al SP1 para que éste lo evalúe.

El SP1 evalúa el código Z, y es probable que éste sea nuevamente un código de tipo fórmula...

...

Es claro que esta es una referencia circular pero siempre y cuando se repita en alguna llamada uno de los códigos anteriores.

En mi caso, esto no sucede ya que una aplicación cliente verifica que no existan códigos repetidos, por lo cual nunca habrá un desbordamiento de pila o numérico.

El problema que tengo, es que, aunque esto no suceda siempre, sobre todo con expresiones cortas, InterBase no me deja ejecutar los SPs.

El error es el siguiente:

"arithmetic exception, numeric overflow, or string truncation on line 1 : SELECT out_result FROM "PayFormValue"('X', ...)

Pensé que de nuevo podría ser IBConsole, y lo probé desde Delphi 7. Generó de nuevo el mismo error.

Intenté usar un procedimiento intermediario, pero tampoco funcionó.

De nuevo, debo decir que estos procedimientos los estoy migrando de MS SQL Server a InterBase, y en SQL Server funcionaban bien.

Quisiera saber si alguien ha tenido algún problema similar y cómo lo ha podido resolver.

Muchas gracias por su colaboración.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita