2011-01-05 5 views
2

우리는 asp.net-mvc (.net 4)를 사용하는보고 응용 프로그램을 개발 중입니다. DDTEK.Sybase 미들웨어를 통해 Sybase ASE 12.5 데이터베이스에 연결합니다.

스토어드 프로 시저의 데이터 보관함에 데이터를 가져 오는 데 문제가 있습니다. 저장 프로시 저는 합계, 개수 및 다른 저장 프로 시저를 호출하여 값 (약 50 열)을 계산합니다.

우리가 겪고있는 문제는 ... 특정 열 (아마도 열의 5 %)이 NULL 또는 0으로 되돌아 온다는 것입니다. 우리가 datareader에 사용되는 SQL 문을 디버그하고 복사 한 다음 다른 SQL 도구로 실행하면 모든 열에 대해 유효한 모든 값을 가져옵니다.


Sybase ASE에서 SQLDataReader를 사용할 때의 문제


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 



사람이 사용하는베이스와 ADO 같은 문제가 있었나요?


덕분에, 존 K.

+1

문제가 해결되었습니다. ... SQL에서 null이 처리되는 방식에 문제가있는 것으로 나타났습니다. ... 저장 프로 시저에서 nonsi null 테스트를 사용하는 인스턴스가 여러 개 있습니다. (x = null이 아닌 x = null)이 문제를 테스트하는 데 사용한 SQL 도구는 ADO 코드가 아니기 때문에 "SET ANSINULL"을 OFF로 설정하고 "SET ANSINULL"값을 ON으로 설정했습니다. 이 설정으로 인해 널 (null)을 테스트 한 SQL 코드는 "TRUE"를 테스트하지 않으므로 널 (NULL) 값이 리턴됩니다. –

답변

1

은 문제 해결! ... 문제는 SQL에서 null이 처리되는 방식과 다르다는 것이 밝혀졌습니다. ... 우리는 nonsi null 테스트를 사용하는 저장 프로 시저에 여러 인스턴스가 있습니다. (x = null이 아닌 x = null)이 문제를 테스트하는 데 사용한 SQL 도구는 ADO 코드가 아니기 때문에 "SET ANSINULL"을 OFF로 설정하고 "SET ANSINULL"값을 ON으로 설정했습니다. 이 설정으로 인해 널 (null)을 테스트 한 SQL 코드는 "TRUE"를 테스트하지 않으므로 널 (NULL) 값이 리턴됩니다.

관련 문제