3

Number(*,0)スケールがゼロで精度が高いOracle にどのデータ型を使用すればよいか、少し混乱していますか?

どちらを使用する必要がありますCF_SQL_INTEGERCF_SQL_FLOAT? なぜ?

4

1 に答える 1

4

ドキュメントによると、Number(*,0)非常に大きな整数、つまり最大 38 桁で小数点以下の桁数を使用していないことを意味します。

column_name NUMBER (precision, scale)

...精度(合計桁数) と位取り(小数点以下の桁数):

column_name NUMBER (*, scale)

この場合、精度は 38 で、指定された位取りは維持されます。

に格納するには桁数が多すぎますCF_SQL_INTEGER。フルレンジをサポートするには、はるかに容量の大きいタイプが必要です。または のいずれかを意味する標準のJDBC マッピングを見る。どちらも Java のBigDecimalをストレージに使用しており、十分な容量があります。java.sql.Types.NUMERICjava.sql.Types.DECIMALNumber(38,0)

cfqueryparamマトリックスとOracle JDBC ドライバーのドキュメントは両方とも、DECIMAL 型について同じことを述べていますは本当に単なる同義語であるため、どちらを使用してもかまいません。java.sql.Types.NUMERICjava.sql.Types.DECIMAL

注: cfqueryparam を使用する場合、"scale" 属性を省略すると、デフォルトで scale="0" に設定されます。つまり、小数点以下の桁数はありません。

    <cfqueryparam type="CF_SQL_DECIMAL" scale="0" value="....">
于 2016-04-01T13:49:24.400 に答える