Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/06/2015, 11:44
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Procedimiento Almacenado

Ok.
Empecemos por el principio: Ese script lo que hace es crear un SP con un nombre que entra por parámetro, y con un body (cuerpo de código SQL) que contiene a partir de ese momento el nombre de una tabla. AL ser creado, tanto el nombre del SP como el de la tabla contenida en el SP pasan a ser nombres fijos.
Esto implica que deberás ejecutar esa creación de SP tantas veces como tablas iguales y con diferente nombre tengas, pero sólo una vez por cada ocasión.
Eso lo tienes claro, supongo, ¿no?

No se debe, bajo ninguna circunstancia, andar recreando SP en cada ejecución, es decir no destruyes un SP para crear otro cada vez que quieres cambiar de tabla a leer..

A partir de la creación, entonces, simplemente invocas al SP de acuerdo a la necesidad de la tabla que usarás. En ese contexto es donde realmente aparece este problema:
Cita:
eso es lo que me debe hacer el procedimiento, pero el procedimiento que hasta el momento tengo solo me guarda

Lo que hace .............

CUENTA CENTRO COSTO

11100503 NULL
111005 NULL
1110 NULL
11 NULL
1 NULL
11050502 102030
11050502 102000
11050502 100000
11050502
En esencia, como el comportamiento variará de acuedo a la tabla que se consulte en el momento de ejecución, y puede que dos ejecuciones no tengan la misma tabla, habría que debuggear un caso puntual, donde la tabla que se invoque sea la misma, para saber si esto realmente está ocurriendo, o es que dos ejecuciones invocan a tablas diferentes.

Eso por un lado.

Por otro, a simple vista veo algunas cosas que pueden causar problemas:
Código MySQL:
Ver original
  1. SELECT codigo, movimiento, terceros,mayor, centrocosto
  2. FROM puc WHERE codigo = v_codigo_cuenta
  3. INTO puc_cuenta, puc_movimiento, puc_terceros, puc_mayor, puc_centro_costo;
  4. SELECT puc_cuenta, puc_movimiento, puc_terceros, puc_mayor, puc_centro_costo;
Ese segundo select genera una salida al buffer de consultas que no debería existir hasta el final del SP. Una de las consecuencias posibles es que se interrumpa la ejecución de tu script programado antes que la ejecución del SP termine, y la aplicación no se entera, porque ya leyó un resultado... y tu lo haces al menos en tres partes diferentes.

A la noche lo revisaré mejor, pero me da la impresión de que la lógica contenida no está correctamente armada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)