SuppressGetDecimalInvalidCastException

このプロパティは、InvalidCastExceptionを抑制し、28または29の精度に四捨五入された.NET Decimalとして表すことができるOracle NUMBER値を返すかどうかを指定します。

宣言

// C#
public bool SuppressGetDecimalInvalidCastException { get; set;}

プロパティ・タイプ

Sysyem.Boolean

備考

Oracle NUMBERの精度は最大38です。.NET Decimalの精度は最大28または29です。OracleDataReader GetDecimal()GetValue()またはOracleDataAdapter Fill()メソッドが.NETのDecimalとして表現できないOracleのNUMBER値に対して呼び出された場合、数値を.NETのDecimalに変換する際にすべての精度を保持できるわけではないため、ODP.NETによりInvalidCastExceptionがスローされます。

この動作は、SuppressGetDecimalInvalidCastExceptionがデフォルト値であるfalseに設定されている場合に発生します。

SuppressGetDecimalInvalidCastExceptiontrueに設定されている場合、結果の.NETのDecimalは28または29の精度に丸められます。これにより、例外をスローせずに、すべての値を表すことができます。端数処理された数値が .NET Decimalに格納できる数値を超える場合は、数値1 x 10^32などの例外がスローされます。

SuppressGetDecimalInvalidCastExceptionプロパティは、OracleConfigurationOracleDataReaderおよびOracleDataAdapterオブジェクトでも構成できます。OracleConnection SuppressGetDecimalInvalidCastExceptionプロパティ値は、作成時にOracleConfiguration SuppressGetDecimalInvalidCastExceptionプロパティ値を継承します。

OracleConnection.SuppressGetDecimalInvalidCastExceptionを使用すると、このODP.NET設定はすべての接続のコマンド実行に対して有効になります。これは、OracleDataReaderまたはOracleDataAdapterレベルでオーバーライドできます。各レベルには独自のSuppressGetDecimalInvalidCastExceptionプロパティがあります。