2011-01-05 7 views
2

asp.net-mvc(.net 4)を使用するレポート作成アプリケーションを開発しています。 DDTEK.SybaseミドルウェアをSybase ASE 12.5データベースに接続します。

ストアドプロシージャからデータをデータ引き出しに引き込む際に問題が発生しました。ストアドプロシージャは、合計、カウント、および他のストアドプロシージャの呼び出しによって値(約50列)を計算します。

問題は、特定の(おそらく5%の列)がNULLまたは0で戻ってくることです。データウェアハウスに使用されている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 



は、誰もがこの使用してSybaseとADOのような問題がありましたか?


おかげで、 ジョンK.

+1

問題が解決しました。 ... 問題は、SQLでNULLが処理された方法とは異なることが判明しました。 ... ストアドプロシージャに、非ANSIヌルテストを使用するインスタンスがいくつかありました。 (x = nullではなくx = null)この問題をテストするために使用したSQLツールは、ADOコードが "SET ANSINULL"の値がONになっている間に、 "SET ANSINULL"をOFFにデフォルト設定していました。この設定のため、nullをテストしたSQLコードは、 "TRUE"をテストしてnull値を返すことはできません。 –

答えて

1

は問題解決します! ...問題は、NULLがSQLで処理されたやり方とは異なることが判明しました。 ...私たちは非ANSIヌルテストを使用したスト​​アドプロシージャのインスタンスをいくつか持っていました。 (x = nullではなくx = null)この問題をテストするために使用したSQLツールは、ADOコードが "SET ANSINULL"の値がONになっている間に、 "SET ANSINULL"をOFFにデフォルト設定していました。この設定のため、nullをテストしたSQLコードは、 "TRUE"をテストしてnull値を返すことはできません。

関連する問題