Hola a todos.
Estoy un poco desesperado con esto, porque no consigo encontrar el problema. A ver si a alguno de vosotros se os enciende la bombilla.
Mi aplicación conecta localmente a una base de datos Oracle mediante ODBC y el programa accede mediante objectos CRecordSet de MFC.
El problema es que algunas ejecuciones me devuelven datos incorrectos. Yo ejecuto una query SQL en el Oracle SQL Developer o el SQLPlus y me devuelve los valores correctos.
Cojo esa misma SQL, la ejecuto desde un recordset y me devuelve valores incorrectos. De hecho me devuelve valores anteriores. Es decir, si en la base de datos había por ejemplo esto:
ANZAHL WERT
---------- ----------
37 500
11 1000
El programa ejecuta otra query y pone esos valores a cero. Hace un commit y listo, los valores han cambiado. Verificado porque vuelvo a leer con el Oracle SQL developer y SQLPlus.
Sin embargo, y ojo, esto es importante, en nuevas ejecuciones del programa, y también en la misma ejecución (y la base de datos es local y solo accede ese programa, en condiciones de laboratorio), ejecuciones de la query debe devolver esos valores a cero.
Cierro el programa y lo vuelvo a abrir. Y a veces devuelve los valores correctos (es decir, la columna ANZAHL a cero), pero otras ejecuciones, devuelve los valores 37 y 11 anteriores. Es decir, se ejecuta la query en una parte del código y devuelve los valores correctos. Luego se ejecuta la misma query en otra parte del código y devuelve los valores incorrectos, que son precisamente los que había antes.
Y aquí viene lo bueno, incluso después de hacer un drop completo de la base de datos y volver a cargar los valores por defecto con scripts SQL que lo ponen todo a cero, la query que ejecuta mal... sigue devolviendo esos valores que no existen ya. Pero los devuelve...
He probado a modificar la query que falla para que sea diferente de la que no falla, como por ejemplo obtener alguna columna que no necesito, pero las columnas que fallan, siguen fallando aunque las otras las devuelva bien.
¿Le ha pasado a alguien algo similar o puede darme alguna indicación de por dónde pueden venir los tiros?