Pregunta

Estamos desarrollando una aplicación que utiliza la presentación de informes asp.net-mvc (.net 4). Ponemos en contacto a través de DDTEK.Sybase middleware a una base de datos de Sybase ASE 12.5.
Estamos teniendo un problema tirando de datos en un datareader (de un procedimiento almacenado). El procedimiento almacenado calcula los valores (aproximadamente 50 columnas) por hacer sumas, cuentas, y llamar a otros procedimientos almacenados.
El problema que estamos experimentando es cierto ... (tal vez el 5% de las columnas) vuelve con NULL o 0. Si depurar y copiamos la instrucción SQL que se utiliza para la datareader y ejecutarlo dentro de otra herramienta SQL obtenemos todas válidas valores para todas las columnas.


conn = new SybaseConnection
{
     ConnectionString = ConfigurationManager.ConnectionStrings[ConnectStringName].ToString()
};
conn.Open();

cmd = new SybaseCommand
{
     CommandTimeout = cmdTimeout,
     Connection = conn,
     CommandText = mainSql
};


reader = cmd.ExecuteReader();
// AT THIS POINT IMMEDIATELY AFTER THE EXECUTEREADER COMMAND
// THE READER CONTAINS THE BAD (NULL OR 0) DATA FOR THESE COLUMNS.

DataTable schemaTable = reader.GetSchemaTable();
// AT THIS POINT WE CAN VIEW THE DATATABLE FOR THE SCHEMA AND IT APPEARS CORRECT
// THE COLUMNS THAT DON'T WORK HAVE SPECIFICATIONS IDENTICAL TO THE COLUMNS THAT DO WORK 


Alguien ha tenido problemas de este tipo utilizando Sybase y ADO?

Gracias, John K.

¿Fue útil?

Solución

Problema resuelto! ... El problema resultó ser un diffence en la forma nulos se manejaron en el SQL. ... Hemos tenido varios casos en el procedimiento almacenado que utiliza pruebas no nulos ANSI. (X = null en lugar de x es nulo) Las herramientas de SQL que había utilizado para probar este problema estaban en mora el "SET ansinull" en OFF mientras que nuestro código de ADO no era lo que el valor "SET ansinull" estaba en marcha. Debido a esta configuración, el código SQL que puso a prueba para probar nula nunca "TRUE", permitiendo que el valor nulo a ser devuelto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top