Oracle(へたれな)コネタ Oracle上データが、.NETのDataSetへのFillでオバーフロー

OraclePL/SQL上のSELECT文で取得する列項目に、比率などの演算結果を含む列項目が存在するSELECT文を利用して、DataSetへデータをFillしようとすると例外が発生する場合があります。

SELECT ID,数値1/数値2 AS Ratio
FROM DataTable
(DataTaleはIDと数値1、数値2のフィールドから構成)

これは、Oracle の NUMBER 型の有効桁数は 38 桁であり、.NET Framework の decimal 型は 28 桁であるという制約からであると思われます。ACCESSなどでリンクテーブルにて扱う場合には勝手に切り捨てられているので、この問題が発生することに気が付きませんでした。まさに、へたれなエンジニアがはまりそうなネタです。気をつけましょう。

データ プロバイダのデータ型から .NET Framework のデータ型への変換
OracleDataAdapter クラス