Number(*,0)
スケールがゼロで精度が高いOracle にどのデータ型を使用すればよいか、少し混乱していますか?
どちらを使用する必要がありますCF_SQL_INTEGER
かCF_SQL_FLOAT
? なぜ?
Number(*,0)
スケールがゼロで精度が高いOracle にどのデータ型を使用すればよいか、少し混乱していますか?
どちらを使用する必要がありますCF_SQL_INTEGER
かCF_SQL_FLOAT
? なぜ?
ドキュメントによると、Number(*,0)
非常に大きな整数、つまり最大 38 桁で小数点以下の桁数を使用していないことを意味します。
column_name NUMBER (precision, scale)
...精度(合計桁数) と位取り(小数点以下の桁数):
column_name NUMBER (*, scale)
この場合、精度は 38 で、指定された位取りは維持されます。
に格納するには桁数が多すぎますCF_SQL_INTEGER
。フルレンジをサポートするには、はるかに容量の大きいタイプが必要です。または のいずれかを意味する標準のJDBC マッピングを見る。どちらも Java のBigDecimalをストレージに使用しており、十分な容量があります。java.sql.Types.NUMERIC
java.sql.Types.DECIMAL
Number(38,0)
cfqueryparamマトリックスとOracle JDBC ドライバーのドキュメントは両方とも、DECIMAL 型について同じことを述べています。は本当に単なる同義語であるため、どちらを使用してもかまいません。java.sql.Types.NUMERIC
java.sql.Types.DECIMAL
注: cfqueryparam を使用する場合、"scale" 属性を省略すると、デフォルトで scale="0" に設定されます。つまり、小数点以下の桁数はありません。
<cfqueryparam type="CF_SQL_DECIMAL" scale="0" value="....">