Ver Mensaje Individual
  #3  
Antiguo 29-05-2014
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Reputación: 21
mlara Va por buen camino
Sí, se supone que debería funcionar, pero no funciona.

Se trata de un procedimiento almacenado que realiza operaciones a través de un número de iteraciones que corresponde a un cálculo de coeficiente binomial... eso quiere decir, muchas iteraciones, entre más registros, más iteraciones. El SP puede tomar mucho tiempo, por lo cual es importante ofrecer al usuario la posibilidad de cancelar el proceso.

Al analizar la traza se la sesión nos damos cuenta de que al ejecutar el SP ya sea usando la sentencia SELECT o la sentencia EXECUTE PROCEDURE, el servidor no procesa nuevas solicitudes dentro de la misma sesión hasta tanto no termine la ejecución del SP. Esto sucede a pesar de que la ejecución del SP se realiza dentro de una transacción exclusiva.

Teniendo esta situación, no vale que ejecute cualquier tipo de sentencia, así sea dentro de otra transacción, ya que el servidor no la ejecutará hasta que finalice el SP.

De todas formas para salir de dudas inicié la ejecución del SP desde mi aplicación y luego desde IBExpert ejecuté una sentencia DELETE... COMMIT sobre la tabla MON$STATEMENTS, y nada; el registro, una vez eliminado vuelve a aparecer.

Bueno, se me han ocurrido otras cosas, como el uso de variables contextuales. Esto al comienzo fue una idea que creí podría funcionar, pero al final tampoco, ya que las variables contextuales funcionan en el contexto de una transacción o de una sesión. Como el servidor no realiza ninguna otra operación dentro de la sesión iniciada, no hay forma.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita